如何使用 OCMock 验证某个方法从未被调用?

2024-01-01

在我的日常工作中,我被宠坏了莫基托的never()确认 http://mockito.googlecode.com/svn/tags/latest/javadoc/org/mockito/Mockito.html#never(),这可以确认模拟方法从未被调用。

有没有办法使用 Objective-C 和 OCMock 完成同样的事情?我一直在使用下面的代码,它可以工作,但感觉就像是黑客攻击。我希望有更好的方法...

- (void)testSomeMethodIsNeverCalled {
    id mock = [OCMockObject mockForClass:[MyObject class]];
    [[[mock stub] andCall:@selector(fail) onObject:self] forbiddenMethod];

    // more test things here, which hopefully
    // never call [mock forbiddenMethod]...
}

- (void)fail {
    STFail(@"This method is forbidden!");
}

从 OCMock 的 r69 开始,可以拒绝方法调用http://svn.mulle-kybernetik.com/OCMock/trunk/Source/Changes.txt http://svn.mulle-kybernetik.com/OCMock/trunk/Source/Changes.txt

不错的模拟/快速失败当 在模拟对象上调用方法 尚未设置任何预期 或存根模拟对象将引发 例外。这种快速失败模式可以是 通过创建一个“nice”模拟来关闭:

id mock = [OCMockObject niceMockForClass:[SomeClass class]]

虽然好的模拟会简单地忽略 所有意想不到的方法都有可能 禁止特定方法:

[[mock reject] someMethod]

请注意,在快速失败模式下,如果 异常被忽略,它将是 调用 verify 时重新抛出。这 可以确保 来自不需要的调用 可以检测到通知等。

引用自:http://www.mulle-kybernetik.com/software/OCMock/#features http://www.mulle-kybernetik.com/software/OCMock/#features

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 OCMock 验证某个方法从未被调用? 的相关文章

随机推荐