iOS编写涉及Mknetworkkit的单元测试

标签 ios unit-testing mknetworkkit

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

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

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

我注意到的一件事是,对于有效的情况,会打印可达性消息,但对于无效的情况,则不会打印任何信息。

有任何关于发生什么事的线索吗?

最佳答案

听起来您需要一个信号量或类似的东西来阻止执行,直到请求返回。单元测试运行直到方法结束。如果他们在方法结束时没有出现错误,那么他们就成功了。由于您使用 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];
}

关于iOS编写涉及Mknetworkkit的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754320/

相关文章:

iphone - iOS 7 中 kSecTrustResultConfirm 的替代方案是什么?

ios - 在 deviceready 上检查 navigator.globalization 在 iOS 上返回 undefined

ios - AUGraph FormatConverter (AUConverter) 渲染通知包含 NULL ioData 缓冲区

ios - 如果我的苹果开发者帐户已过期,安装的应用程序是否仍在运行?

unit-testing - 如何在 Grails 3 单元测试中注入(inject)日志属性?

python - 如何创建一个具有固定外部结构的随机json字典用于单元测试?

ios - 何时使用dispatch_get_main_queue

ios - MKNetworkKit 不检索任何图像

ios - 低效的CoreData IN查询

android - 测试 RecyclerView 适配器