一:简单的使用Stub
作用:让方法返回一个预先设定好的值。
The Example
假设我们来写一个小的应用,该应用的目的是接受一个来自Twitter的tweets。我们有一个controller class,用这类来处理来自Twitter的API,在controller里面有TwitterConnection类,TweetView类,和用来展示tweets(内容)的TweetView类。
controller类的.h文件

TwitterConnect有一个方法用来检索又没有新的tweets。

TweetView类的.h文件 ,有一个方法用来添加新的tweet到view上面

为什么我们要使用mocks
1.使用正真的网络连接,会让测试变的很慢。
2.我们不知道Twitter在任何时候会返回什么
3.很难测试错的的情况,因为推特一般不返回错误信息
使用stub来进行单元测试

再来看一下updateTweetView方法里面的内容,fetchTweets方法被调用,返回了特定的数组

二:验证一个mock对象的方法是否被调用
在最后面加上这句

"[OCMArg any]"可以替代任何参数,当stub的方法有参数时,可以这样传入参数。
OCMVerify用来验证addTweet方法是否被调用了,未被调用会报错
网友评论