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
如何使用最近设定的值进行响应?
您可以使用expect方法,例如
mockModule = OCMPartialMock(module);
OCMExpect([mockModule send:@"FOO"]).andReturn(YES);
OCMStub([mockModule send:@"FOO"]).andReturn(NO);
这不是他们的意思,但确实有道理。你基本上是在说,我希望send:
会被调用,当实际发生这种情况时,我希望这个方法能够被删除。
此外,如果有可能“堆积”存根,找出问题将是非常困难的,例如,如果没有发生存根的第一次调用,那么第二次调用将获得第一次调用的值。