0
我正在努力使用OCMock的測試用例。到目前爲止,我在一些項目中使用了OCMock,它總是按照我的想法工作。當我設置一個名爲image
的屬性時,我有以下方法測試[self setNeedsDisplay]
。OCMock不識別被稱爲選擇器
- (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
屬性的setter看起來像這樣。
- (void)setImage:(UIImage *)anImage
{
// Set the image if it changed.
if (anImage != image) {
image = anImage;
[self setNeedsDisplay];
}
}
你可以看到[self setNeedsDisplay]
在setter中被調用。但是,當我進行的測試,我得到以下錯誤:
OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay
它看起來好像方法不叫。但是,如果我使用setter方法設置斷點,它會停止並向我顯示該行由應用程序執行。
你能幫我嗎?我沒有看到我在做什麼錯...
就是這樣!謝謝我沒有想到,但這完全合乎邏輯。 OCMock只是檢查方法是否被調用。現在測試失敗/按預期運行。謝謝! – 2012-07-29 18:03:19