代码一般按顺序执行,但是对于Asynchronous call的情况,可能会导致测试代码执行玩,还没有callback,为了解决这个问题,test framework有个概念叫做expectation,你设置它并要满足某些条件才会继续执行,当等待expectation,你可以设置一个超时的时间,令测试不在等待
Swift比OC创建Mock Objects要麻烦,OC动态分发机制。在Swift中Mock Object以通过subclass来得到,通过封装来实现,然后重载一些方法和属性。
接下来我们测试下这个方法,这个方法的completion的Bool一直会返回false。因为要用户先登录,才有数据。
cmd+U运行
把它改成下面这样也成功了
注意的是这里是异步执行的,里面XCTAssertTrue没有被执行,所以也通过了。
对于异步的操作要用expectation。
这个之所以失败了,是因为loadCloudTestData方法的callback是在2秒后。我们把它设置为3秒,测试通过了
这里一直返回false,但是如果我们想测试true的情况呢?