我试图在我的项目中运行MKNetworkKit,似乎没问题。然后我创建了一个单元测试项目并调用引擎发出一些请求(使用MkNetworkOperation)。我没有明显的错误,但是完成的句柄块永远不会被调用,错误块也是如此。
我检查了我的单元测试设置,没有明显的错误,整个事情“跑了”。我只是没有得到任何回应。如果我在我的主项目中切换并执行此操作,则可行。
我还为单元测试项目添加了所有必要的框架。
我注意到的一件事是,对于有效的案例,可以打印出可达性消息,但对于没有用的案例则没有。
关于最新情况的任何线索?
答案 0 :(得分: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];
}