所以我有一堂课,我写了一些测试用例。这个类有这两个方法:
- (void)showNextNewsItem {
self.xmlUrl = self.nextNewsUrl;
[self loadWebViewContent];
}
- (void)showPreviousNewsItem {
self.xmlUrl = self.previousNewsUrl;
[self loadWebViewContent];
}
可以重构,这是非常原始的,但是我只想确保下一个加载下一个和上一个加载之前。所以我使用 OCMockOCMockObject
为我的 SUT 类实例化一个,如下所示:
- (void)testShowNextOrPreviousItemShouldReloadWebView {
id mockSut = [OCMockObject mockForClass:[NewsItemDetailsViewController class]];
[[[mockSut expect] andReturn:@"http://www.someurl.com"] nextNewsUrl];
[[mockSut expect] loadWebViewContent];
[[[mockSut expect] andReturn:@"http://www.someurl.com"] previousNewsUrl];
[[mockSut expect] loadWebViewContent];
[mockSut showNextNewsItem];
[mockSut showPreviousNewsItem];
[mockSut verify];
}
问题在于这两行实际上调用了要验证的方法。OCMock 现在告诉我,调用showNextNewsItem
并且showPreviousNewsItem
不是预期的。当然,这不是预期的,因为我正在测试中,我只希望在生产代码本身中发生某些事情。
我没有正确理解嘲笑概念的哪一部分?