OCMock 和 UIViewController
OCMock and UIViewController
我目前正在研究如何有效地向我的应用程序的 ViewControllers 添加一些单元测试。到目前为止,它工作得很好,直到我尝试让一个特定的视图控制器呈现另一个视图控制器。
我正在使用 OCMock 和 XCTest。测试如下
id partialMock = OCMPartialMock([TestViewController class]);
[partialMock doSomeStuff];
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]);
如您所见,我只想验证 presentViewController
被调用到 doSomeStuff
函数内的测试视图控制器。请注意,给定的示例是我当前拥有的示例的简化版本。主要区别在于我正在验证参数 viewController
是另一个模拟对象。
问题是因为 doSomeStuff
方法没有被存根,然后调用被转发到真正的 TestViewController
实例,然后它自己调用 presentViewController,然后不触发 partialMock 的验证。
有什么我想念的吗?还是我想要实现的目标真的无法实现?
您可以按照 2.10 中的说明使用 andDo(nil)
存根您想要禁止的方法:http://ocmock.org/reference/
我目前正在研究如何有效地向我的应用程序的 ViewControllers 添加一些单元测试。到目前为止,它工作得很好,直到我尝试让一个特定的视图控制器呈现另一个视图控制器。
我正在使用 OCMock 和 XCTest。测试如下
id partialMock = OCMPartialMock([TestViewController class]);
[partialMock doSomeStuff];
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]);
如您所见,我只想验证 presentViewController
被调用到 doSomeStuff
函数内的测试视图控制器。请注意,给定的示例是我当前拥有的示例的简化版本。主要区别在于我正在验证参数 viewController
是另一个模拟对象。
问题是因为 doSomeStuff
方法没有被存根,然后调用被转发到真正的 TestViewController
实例,然后它自己调用 presentViewController,然后不触发 partialMock 的验证。
有什么我想念的吗?还是我想要实现的目标真的无法实现?
您可以按照 2.10 中的说明使用 andDo(nil)
存根您想要禁止的方法:http://ocmock.org/reference/