gpt4 book ai didi

ios - Kiwi 规范的全局助手

转载 作者:可可西里 更新时间:2023-11-01 05:54:06 27 4
gpt4 key购买 nike

我在我的规范文件中的 BEGIN_SPEC END_SPEC block 中定义了一些辅助 block ,我经常重复使用这些 block 。例如。断言某个对话框出现:

void (^expectOkAlert) (NSString *, NSString *) = ^void(NSString *expectedTitle, NSString *expectedMessage) {
UIAlertView *alertView = [UIAlertView mock];
[UIAlertView stub:@selector(alloc) andReturn:alertView];
[[alertView should] receive:@selector(initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:)
andReturn:alertView
withArguments:expectedTitle,expectedMessage,any(),@"OK",any()];
[[alertView should] receive:@selector(show)];
};

我想在其他几个规范文件上重用这个 block 。这是否有可能像我们通常在 Ruby 世界中使用 spec helpers 和 rspec 那样做?

您如何管理全局规范助手?

最佳答案

你可以

  • expectOkAlert 声明为全局变量,在其他单元测试包含的公共(public) header 中

    extern void (^expectOkAlert) (NSString *, NSString *);
  • 或在 KWSpec 类别中声明 expectOkAlert,您仍然需要一个公共(public) header ,该 header 包含在您需要使用它的单元测试中

    @implementation KWSpec(Additions)
    + (void)expectOkAlertWithTitle:(NSString*)title andMessage:(NSString*)message;
    @end

    然后你像这样使用它:

    it(@"expects the alert", %{
    [self expectOkAlertWithTitle:@"a title" andMessage:@"a message"];
    });
  • 或者创建自定义匹配器并使用它来断言:

    @interface MyAlertMatcher: KWMatcher
    - (void)showOKAlertWithTitle:(NSString*)title andMessage:(NSString*)message;
    @end

    并像这样在你的测试中使用它:

    it(@"expects the alert", %{
    [[UIAlertView should] showOkAlertWithTitle:@"a title" andMessage:@"a message"];
    });

所有方法都要求您在单元测试目标可用 header 中声明助手,否则您将收到编译警告/错误。

关于ios - Kiwi 规范的全局助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com