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
如何使用最近设定的值进行回复?
答案 0 :(得分:1)
您可以使用 expect 方法,例如
mockModule = OCMPartialMock(module);
OCMExpect([mockModule send:@"FOO"]).andReturn(YES);
OCMStub([mockModule send:@"FOO"]).andReturn(NO);
这不完全是他们的意思,但确实有道理。你基本上说,我希望调用send:
,当实际发生这种情况时,我希望方法被存根。
此外,如果有可能"堆积"存根,弄清楚出了什么问题将是非常困难的,例如如果存根的第一次调用没有发生,那么第二次调用将得到第一次调用的值。