注意,你仍然要以异步方式来编写这个测试,因为代理(stub)假装自己是一个异步的方法。
上面代码中,when断言的作用是:在数据任务运行之前searchResults的值应当是空的——这应该是真实情况,因为您在setup()方法中创建了一个全新的SUT。
伪造的数据包含了提供给三个跟踪(Track)对象使用的JSON数据;所以,then断言的作用是:视图控制器的searchResults数组应当包含三项。
再次运行该测试。这次应该成功,而且速度很快,因为不存在任何真实的网络连接!
伪造对模拟对象的更新
以前的测试使用代理从假对象提供输入。接下来,你可以使用一个模拟对象来测试你的代码可以正确更新UserDefaults。
重新打开BullsEye项目。注意到,该应用程序提供了两种游戏风格:用户可以选择移动滑块来匹配目标值或从滑块位置猜测目标值。借助于界面右下角的分段控制开关可以切换游戏风格并更新用户默认的游戏风格。
你要编写的下一个测试将检查应用程序能够正确地更新用户默认的游戏风格数据。
在测试导航器中,点击命令“New Unit Test Target…”,并命名为BullsEyeMockTests。然后,在导入语句下面添加以下内容:
原文转自:http://mobile.51cto.com/iphone-535758.htm