ios - OCMock 期望在另一个方法中调用一个方法

标签 ios unit-testing ocmock

这是一个关于 OCMock 期望的极其基本的问题。让我们在 objectA 上有一个实例方法 methodA,它调用 objectA 上的实例方法 methodB。

- (void)methodA {
    [self methodB];
}

- (void)methodB {
    ...
}

现在,假设我想验证 objectA 的部分模拟是否调用了 methodA 和 methodB。看起来你应该做的就是:

- (void)test {
   id mockObjectA = [OCMockObject partialMockForObject:self.objectA];
   [[mockObjectA expect] methodA];
   [[mockObjectA expect] methodB];

   [self.objectA methodA];

   [mockObjectA verify];
}

当我运行测试时,它认为 methodA 已成功调用,但 methodB 未成功调用。我误会了什么?

感谢您的帮助。

最佳答案

您需要告诉 mock 将方法调用转发给真实对象,以便实现真正运行。

[[[mockObjectA expect] andForwardToRealObject] methodA];

关于ios - OCMock 期望在另一个方法中调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345012/

相关文章:

ios - 带有子 ViewController 的 UIPageViewController

ios - 测量蜂窝信号强度

javascript - jQuery/Cordova 历史问题 - iOS 9 历史被打破?

ios - AVCaptureDevice 低光增强 swift

java - UnitTest 辅助类(不是 Controller ,不是服务等)

objective-c - OCMock 随机崩溃

python - 使用 yield 为函数编写单元测试

c# - IronPython 用于 C# 上的单元测试

ocmock 的 invokeBlockWithArgs 使用 nil 参数

ios - 从 View Controller 上的方法内部测试/模拟称为类方法的 UIAlertView