使用 Google Mock 1.7.0,我有一个带有方法的模拟对象,我希望它被调用,在这种情况下,模拟的方法应该引发异常。
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(???);
是否存在引发异常的 Google Mock 操作?我在文档中没有找到它,但我怀疑到目前为止没有人需要它。
谢谢!
最佳答案
只需编写一个引发异常的简单操作:
ACTION(MyThrowException)
{
throw MyException();
}
并像使用任何标准 Action 一样使用它:
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(MyThrowException());
还有一个 googlemock 标准操作 Throw()
, 支持在执行操作时抛出异常(注意 MyException
必须是可复制的类,才能使其正常工作!):</p>
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(Throw(MyException()));
查找 ACTION
的完整文档和参数化 ACTION_P<n>
GoogleMock CookBook 中的定义.
关于c++ - 如何使模拟对象在 Google Mock 中引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336498/