OCMock を使用するテストケースに苦労しています。これまでのところ、いくつかのプロジェクトで OCMock を使用しましたが、常に思ったとおりに動作します。[self setNeedsDisplay]
というプロパティを設定したときに呼び出されるテストを行う次のメソッドがありますimage
。
- (void)testSetTapColorCallsDrawRect
{
SMColorButton *button = [[SMColorButton alloc] initWithImage:nil];
id mock = [OCMockObject partialMockForObject:button];
// Exptect setNeedsDisplay.
[[mock expect] setImage:OCMOCK_ANY];
[[mock expect] setNeedsDisplay];
button.image = [UIImage imageNamed:@"Button.png"];
[mock verify];
}
プロパティのセッターはimage
次のようになります。
- (void)setImage:(UIImage *)anImage
{
// Set the image if it changed.
if (anImage != image) {
image = anImage;
[self setNeedsDisplay];
}
}
[self setNeedsDisplay]
がセッターで呼び出されていることがわかります。しかし、テストを実行すると、次のエラーが発生します。
OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay
メソッドが呼び出されていないように見えます。しかし、setter メソッドにブレークポイントを設定すると、停止し、その行がアプリケーションによって実行されたことが示されます。
あなたは私を助けることができます?何が間違っているのかわかりません...