【问题标题】:Block is null when trying Kiwi stubWithBlock:尝试 Kiwi stubWithBlock 时,Block 为空:
【发布时间】:2015-03-25 15:52:20
【问题描述】:

我正在尝试根据我的 API 调用的成功或失败来测试我的应用的行为是否正确。

当我断点__block 语句时,该块为nil (EXC_BAD_ACCESS) 当我在底部调用userSuccess 块时,它也是nil。我仍在尝试将头完全包裹在积木上。以为我这次有,但显然没有。

非常感谢任何帮助

    __block void (^userSuccess)(NSDictionary *data);
    __block void (^userFailure)(NSError *error);
    __block void (^authSuccess)(NSDictionary *authData);
    __block void (^authFailure)(NSError *authError);

    beforeAll(^{

        [testController stub:@selector(userManager) andReturn:[KWMock nullMockForClass:[CLASS class]]];

        [testController stub:@selector(authManager) andReturn:[KWMock nullMockForClass:[CLASS class]]];

        [testController.userManager stub:@selector(createWithData:success:failure:) withBlock:^id(NSArray *params) {

            userSuccess = [params objectAtIndex:1];
            userFailure = [params objectAtIndex:2];
            return nil;
        }];

        [testController.authManager stub:@selector(loginWithEmail:password:disableLaunch:success:failure:) withBlock:^id(NSArray *params) {

            authSuccess = [params objectAtIndex:3];
            authFailure = [params objectAtIndex:4];
            return nil;
        }];
    });

    it(@"should attempt to hit auth after a successful user call", ^{

        [[testController.authManager should] receive:@selector(loginWithEmail:password:disableLaunch:success:failure:)];
        NSDictionary *responseData = @{};
        userSuccess(responseData);
    });

【问题讨论】:

    标签: ios objective-c-blocks kiwi


    【解决方案1】:

    发现一些问题:

    1. 在您的测试中设置的“应该收到”期望会覆盖您在 beforeAll() 中设置的存根
    2. 您应该使用 beforeEach(),它可以让您更好地控制测试(尽管在这种特殊情况下只有一个测试,beforeEach 和 beforeAll 的行为相同)
    3. 您没有触发任何代码执行,您只是在设置期望值。
    4. 我对控制器的 getter 覆盖有更多意见,但这是一个更长的话题。

    修复 #3 和 #1 应该可以解决您的问题,因为问题的原因是控制器上的登录方法没有被调用,即使被调用,测试中设置的期望值也会覆盖beforeAll() 调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 2017-11-02
      • 2019-04-22
      • 2014-05-07
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多