OCMock 3 不匹配字符串参数

OCMock 3 not matching the string argument

我开始在我的项目中使用 OCMock (3.1.2) 进行单元测试,但我的行为很奇怪。看下面的测试:

- (void)testOCMock
{
    OCMExpect([self.delegate openEmailComposer:@"me@email.com"]);

    [self.delegate openEmailComposer:@"hello there"];
}

令人惊讶的是,测试成功了。我错过了什么吗?

我猜您期待的是严格(或快速失败)模式。在您的示例中,您是否希望模拟抱怨带有 @"hello there" 参数的 openEmailComposer: 是意外的?在那种情况下使用严格的模拟。

通常重点放在应该调用的方法上。简单的失败案例是这样的:

OCMExpect([self.delegate openEmailComposer:@"me@email.com"]);
[self.delegate openEmailComposer:@"hello there"];
OCMVerifyAll(); // fails because openEmailComposer: wasn't called with the right argument

最后但同样重要的是,我建议使用较新的验证后运行方法:

[self.delegate openEmailComposer:@"hello there"];
OCMVerify([self.delegate openEmailComposer:@"me@email.com"]); // fails