gpt4 book ai didi

objective-c - OCMock - 是否需要调用 "verify"来断言在模拟对象上调用了一个方法?

转载 作者:行者123 更新时间:2023-11-28 22:53:21 25 4
gpt4 key购买 nike

我对 OCMockObject 上的“验证”方法做了什么感到困惑,是否有必要调用它来测试是否在模拟对象上调用了一个方法?即使我在测试执行后实际上没有调用“验证”,如果我没有完全设置要在模拟对象上调用的方法的期望值,我仍然会遇到测试失败。

例如:

在测试方法中

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 的模拟对象上调用方法时,模拟对象将引发异常。可以通过创建“nice”来关闭这种快速失败模式模拟:“

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

关于objective-c - OCMock - 是否需要调用 "verify"来断言在模拟对象上调用了一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11353102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com