上面这个测试的目的是检查发送到iTunes的有效的查询是否能够返回状态码200。显然,其中大部分代码与你在上面应用程序中所写的一样,只是增加了如下几行︰
1.expectation(_:)返回一个XCTestExpectation对象;此对象存储在变量promise中。此对象的其他常用名字是expectation和future。另外,description参数描述了你期望发生的事情。
2.为了匹配description参数,您需要在异步方法的完成处理程序的成功条件闭包中调用promise.fulfill()。
3.waitForExpectations(_:handler:)的作用是保持所有测试在运行中,直到所有的期望得以实现,或者timeout值指定的时间间隔结束——无论两者哪一种早发生都行。
现在,再来运行该测试。如果你已经连接到互联网,则当应用程序在模拟器中加载后成功测试大约花费一秒钟时间。
使测试失败更快一些
测试失败会导致不少问题,但它未必花费很多时间。现在,我们来解决如何快速确定是否您的测试失败的问题。
为了修改一下您的测试,从而导致异步操作时失败,你只需要从下面的URL中删除“itunes”一词后面的s字母即可:
运行上述测试时︰它会失败,而且此测试会花费所有指定的超时间隔时间!这是因为它的期望是请求成功——正是在这个位置调用了promise.fulfill()方法。既然请求失败,那么测试仅当在超过指定时限时才结束。
原文转自:http://mobile.51cto.com/iphone-535758.htm