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