だから私はいくつかのテストケースを書いたクラスを持っています。このクラスには、次の2つのメソッドがあります。
- (void)showNextNewsItem {
self.xmlUrl = self.nextNewsUrl;
[self loadWebViewContent];
}
- (void)showPreviousNewsItem {
self.xmlUrl = self.previousNewsUrl;
[self loadWebViewContent];
}
リファクタリングすることができ、これは非常に原始的ですが、それでも、次のロードと前のロードを確認したいだけです。したがって、OCMockを使用してOCMockObject
、次のように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];
}
問題は、検証対象の何かを実行するメソッドを実際に呼び出す2行にあります。OCMockは今、私に、それを呼び出すことは期待されshowNextNewsItem
てshowPreviousNewsItem
いないことを教えてくれます。もちろん、私はテスト中であり、本番コード自体で特定のことが起こることだけを期待しているため、これは予期されていません。
嘲笑の概念のどの部分が正しく理解できなかったのですか?