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

Posted

技术标签:

【中文标题】OCMock 期望在另一个方法中调用一个方法【英文标题】:OCMock expect a method called within another method 【发布时间】:2013-05-02 18:18:34 【问题描述】:

这是一个关于 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没有被成功调用。我有什么误解?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

[[[mockObjectA expect] andForwardToRealObject] methodA];

【讨论】:

光荣,谢谢!看来我需要更仔细地阅读文档。顺便说一句,可能想对您的答案稍作修改以供未来的人们使用:[[[mockObjectA expect] andForwardToRealObject] methodA];

以上是关于OCMock 期望在另一个方法中调用一个方法的主要内容,如果未能解决你的问题,请参考以下文章

所有调用的 OCMock 存根类方法

使用从测试方法调用的方法的类的 OCMock

使用 OCMock 模拟块期望

是否可以在静态方法中 OCMock 类调用?

OCMock 测试分配一个对象并在其上调用一个方法

OCMock - 验证方法调用的顺序。还有其他方法吗?