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