Swift 单元测试 - 等到服务响应

Posted

技术标签:

【中文标题】Swift 单元测试 - 等到服务响应【英文标题】:Swift Unit test - Wait until service response 【发布时间】:2015-08-27 20:38:13 【问题描述】:

我正在尝试从我的应用程序中进行单元测试。我的应用程序包括服务集成。我正在为此任务实现一个适配器,我需要等待服务响应来处理响应,然后验证响应对象。

我有 2 个在服务响应到达时调用的委托函数。

 func didReceiveAPIResults(#results: AnyObject, path: String, serverTag: String) 


 func didReceiveAPIResultsFailed(#error: NSError, errorObject: AnyObject, path: String, serverTag: String) 

我需要处理前面函数中的响应,然后完成单元测试。

如何指定?

【问题讨论】:

【参考方案1】:

依赖于外部 API 的测试算不上是“单元”测试。为您的适配器实现测试替身以返回一致的响应可能更可靠。这样的 double 可能能够通过立即调用您的委托方法来提供同步接口。

如果您确实需要测试异步行为,XCTest 为Writing Tests of Asynchronous Operations 提供了XCTestExpectation。大多数第三方测试库也提供类似的东西。

【讨论】:

我理解您的观点,但我需要测试所有应用程序集成。我需要测试应用流畅度,模拟按钮触摸等。 当以多种方式模拟服务响应以根据响应的结果模拟不同的行为时,您可以更好地测试所有应用程序的功能。您的集成 (!) 测试将运行更长时间,并且当响应因真实数据而不同时,它们会更频繁地中断。 抱歉,找不到该页面:(

以上是关于Swift 单元测试 - 等到服务响应的主要内容,如果未能解决你的问题,请参考以下文章

RavenDb:在单元测试时强制索引等到不陈旧

如何在 iOS swift 中制作登录屏幕的单元测试用例

单元测试心跳功能

开玩笑的单元测试不会等待 axios 响应

单元测试用例 - Swift 3.2

模拟 API 响应时如何在单元测试中使用 JSON 文件