我正在为使用 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]
在setter中被调用。但是当我运行测试时,我收到以下错误:
OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay
看起来好像没有调用该方法。但是,如果我在 setter 方法中设置断点,它会停止并显示该行已由应用程序执行。
你能帮我吗?我不明白我做错了什么......