OCMock和覆盖存根值

时间:2017-12-14 15:13:28

标签: objective-c unit-testing ocmock

mockModule = OCMPartialMock(module);
OCMStub([mockModule send:@"FOO"]).andReturn(YES);
OCMStub([mockModule send:@"FOO"]).andReturn(NO);

在这个例子中我有一个简单的模拟模块,我设置了一些存根,当发送一个String时返回YES / NO,发生的问题是如果我设置相同的字符串两次它只返回第一个值,而不是新的价值。

在这个例子中,关于这个问题被证明是这样的,我期待一个如下的调用:

BOOL answer = [module send:@"FOO"]
//answer should be NO, but is YES

如何使用最近设定的值进行回复?

1 个答案:

答案 0 :(得分:1)

您可以使用 expect 方法,例如

mockModule = OCMPartialMock(module); OCMExpect([mockModule send:@"FOO"]).andReturn(YES); OCMStub([mockModule send:@"FOO"]).andReturn(NO);

这不完全是他们的意思,但确实有道理。你基本上说,我希望调用send:,当实际发生这种情况时,我希望方法被存根。

此外,如果有可能"堆积"存根,弄清楚出了什么问题将是非常困难的,例如如果存根的第一次调用没有发生,那么第二次调用将得到第一次调用的值。