我对OCMockObject上的“verify”方法的作用感到困惑,是否有必要调用这个方法来测试是否在mock对象上调用了一个方法?即使在测试执行之后我没有真正调用“verify”,如果我没有完全设置要在模拟对象上调用的方法的期望值,我仍然会得到测试失败。
例如:
在测试方法中
OCMockObject *mockView = [OCMockObject mockForClass:[UIView class]];
[controller setValue:mockView forKey:@"sampleView"];
[[mockView expect] setHidden:YES];
[controller processSampleView];
//do I need to call "verify" here?
// If I don't, I still get test failures if "setHidden:YES" is not called...
[mockView verify];
2条答案
按热度按时间pb3s4cty1#
OCMock网站上的功能描述如下:
还有这个
所以,是的,当你调用意外的方法时,会引发异常。但是,上面的示例表明,如果没有调用预期的方法,即使没有调用verify,也会引发异常。这似乎是不可能的,因为如果不调用verify,就没有到OCMock的代码路径。在你的例子中,异常从哪里引发,ie.异常的stacktrace是什么?是否有可能在另一个调用verify的测试中重用模拟视图?控制器示例在测试之间是否会停留?
xpcnnkqh2#
通过OCMock验证方法,我们可以检查预期的方法是否被调用。
1.如果你想检查方法不应该被调用,那么你可以检查:
1.如果你想检查方法应该被调用,那么你可以检查通过:
这对我来说是有效的,我希望它能有效。