Objective c OCMock-是对“的调用”;核实;是否需要断言对模拟对象调用了方法?

Objective c OCMock-是对“的调用”;核实;是否需要断言对模拟对象调用了方法?,objective-c,ios,xcode,ocmock,Objective C,Ios,Xcode,Ocmock,我对OCMockObject上的“verify”方法的作用感到困惑,是否有必要调用它来测试是否在mock对象上调用了一个方法?即使在测试执行后我没有真正调用“verify”,如果我没有完全设置对模拟对象调用的方法的期望,我仍然会得到测试失败 例如: 在试验方法中 OCMockObject *mockView = [OCMockObject mockForClass:[UIView class]]; [controller setValue:mockView forKey:@"sampleView

我对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];

OCMock网站上的功能描述如下:

“如果未调用预期的方法,验证方法将引发异常。”

这是:

当对未使用expect或stub设置的模拟对象调用方法时,模拟对象将引发异常。可通过创建“良好”模拟来关闭此快速失败模式:

因此,是的,当您调用意外的方法时会引发异常。但是,上面的示例表明,即使未调用verify,如果未调用预期的方法,也会引发异常。这似乎是不可能的,因为如果不调用verify,就没有进入OCMock的代码路径。在您的情况下,异常从何处引发,即异常的堆栈跟踪是什么?是否可能在另一个调用verify的测试中重用模拟视图?控制器实例是否在测试之间停留