我目前正在研究如何有效地向我的应用程序的ViewController中添加一些单元测试。到目前为止,它一直运行良好,直到我尝试让一个特定的 View Controller 呈现另一个 View Controller 为止。

我正在使用OCMock和XCTest。测试如下

id partialMock = OCMPartialMock([TestViewController class]);
[partialMock doSomeStuff];
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]);

如您所见,我只想验证presentViewController函数内已测试的 View Controller 是否调用了doSomeStuff。请注意,给定的示例是我目前所拥有的简化版本。主要区别在于,我正在验证参数viewController是另一个模拟对象。

问题在于,由于doSomeStuff方法未 stub ,因此该调用将转发到真实的TestViewController实例,该实例随后对其自身调用presentViewController,而不会触发partialMock的验证。

有什么我想念的吗?还是我要实现的目标确实是不可撤消的?

最佳答案

您可以使用andDo(nil) stub 要抑制的方法,如2.10所述:ojita

10-08 16:58