使用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/

10-11 23:08
查看更多