OCMock和覆盖存根值

问题描述 投票:0回答:1
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

如何使用最近设定的值进行响应?

objective-c unit-testing ocmock
1个回答
1
投票

您可以使用expect方法,例如

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

这不是他们的意思,但确实有道理。你基本上是在说,我希望send:会被调用,当实际发生这种情况时,我希望这个方法能够被删除。

此外,如果有可能“堆积”存根,找出问题将是非常困难的,例如,如果没有发生存根的第一次调用,那么第二次调用将获得第一次调用的值。

© www.soinside.com 2019 - 2024. All rights reserved.