Testing in iOS(二)

代码一般按顺序执行,但是对于Asynchronous call的情况,可能会导致测试代码执行玩,还没有callback,为了解决这个问题,test framework有个概念叫做expectation,你设置它并要满足某些条件才会继续执行,当等待expectation,你可以设置一个超时的时间,令测试不在等待


Testing in iOS(二)_第1张图片
Paste_Image.png

Swift比OC创建Mock Objects要麻烦,OC动态分发机制。在Swift中Mock Object以通过subclass来得到,通过封装来实现,然后重载一些方法和属性。


Testing in iOS(二)_第2张图片
Paste_Image.png

接下来我们测试下这个方法,这个方法的completion的Bool一直会返回false。因为要用户先登录,才有数据。


Testing in iOS(二)_第3张图片
Paste_Image.png

cmd+U运行
Testing in iOS(二)_第4张图片
Paste_Image.png

把它改成下面这样也成功了

Testing in iOS(二)_第5张图片
Paste_Image.png

注意的是这里是异步执行的,里面XCTAssertTrue没有被执行,所以也通过了。
对于异步的操作要用expectation。

Testing in iOS(二)_第6张图片
Paste_Image.png

这个之所以失败了,是因为loadCloudTestData方法的callback是在2秒后。我们把它设置为3秒,测试通过了

Testing in iOS(二)_第7张图片
Paste_Image.png

这里一直返回false,但是如果我们想测试true的情况呢?

Testing in iOS(二)_第8张图片
Paste_Image.png

你可能感兴趣的:(Testing in iOS(二))