单元测试:网络响应、文本字段及委托方法的测试实践
1. 网络响应测试
在单元测试中,对于 XCTestCaseExpectation 的超时设置,很多示例指定为 1 秒,甚至有 10 秒的情况。但在没有实际网络请求的单元测试里,这时间太长了。建议使用 0.01 秒(10 毫秒)或更短的超时时间。
1.1 避免在闭包中使用断言
当测试为异步测试提供闭包时,多数在线示例会把 XCTest 断言直接放在闭包内。这种方式会混淆测试的 Arrange、Act 和 Assert 部分,导致 Assert 部分的代码出现在 Arrange 部分。
建议测试提供的闭包在异步测试中做两件事:
1. 捕获要测试的参数。
2. 调用 fulfill() 来解除等待条件。
解除等待条件后,测试的其余部分就可以检查捕获的参数,这样能让异步测试的断言放在最后,使测试代码更易理解和维护。
1.2 确保异步代码在闭包内
测试从后台线程返回主线程保存结果的代码时,存在一个问题:如果有人误将保存结果的代码移到 DispatchQueue.main.async 闭包之外,测试仍可能通过。
为避免这种情况,需要编写第二个测试,跳过异步闭包。这个测试将证明没有闭包时,结果不会被保存。具体操作如下:
1. 复制第一个测试。
2. 将复制的测试用例名称改为 test_searchForBookNetworkCall_withSuccessBefor
超级会员免费看
订阅专栏 解锁全文
1376

被折叠的 条评论
为什么被折叠?



