0

我尝试在我的项目中运行 MKNetworkKit,它似乎很好。然后我创建了一个单元测试项目并调用引擎发出一些请求(使用 MkNetworkOperation)。我没有得到明显的错误,但完成处理程序块从未被调用,错误块也是如此。

我检查了我的单元测试设置,没有明显的错误,整个事情“跑”了。我只是没有得到任何回应。如果我在我的主项目中切换并执行此操作,它会起作用。

我还在单元测试项目中添加了所有必要的框架。

我注意到的一件事是,对于有效的案例,会打印出可达性消息,但对于无效的案例则没有。

关于发生了什么的任何线索?

4

1 回答 1

1

听起来您需要一个信号量或类似的东西来阻止执行,直到请求返回。单元测试一直运行到方法结束。如果他们在没有错误的情况下完成了方法,那么他们就成功了。由于您使用 MKNetworkKit,服务器请求是异步的,因此在请求完成之前就已经结束了该方法。我找到了一个帮助类来帮助进行单元测试。我会尝试再次找到它并使用一些示例代码链接到它。

找到它:http ://www.touch-code-magazine.com/unit-testing-for-blocks-based-apis/

所以我已经有一段时间没有写这些测试了。我很确定这会起作用,但您可能需要对其进行调整。

-(void)tests {
    //setup
    NSString *key = @"myTestKey";

    //test
    STAssertNoThrow(
        [API resetPassword:@"fakeemail@this.net callback:^(NSDictionary *result) {

        STAssertNotNil(result, @"reset pass response was nil"]);
        [[TestSemaphor sharedInstance] lift:key];
    } error:^(NSDictionary *error) {

        STFail(@"reset password failed: %@", error.description);
        [[TestSemaphor sharedInstance] lift:key];
    }], @"reset password failed");

    [[TestSemaphor sharedInstance] waitForKey:key];
}
于 2013-07-19T21:23:29.473 回答