使用Google Mock 1.7.0,我有一个带有方法的模拟对象,我想期望它被调用,在这种情况下,模拟的方法应该抛出异常。
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(???);
是否存在引发异常的Google Mock操作?我没有在文档中找到它,但我怀疑到目前为止还没有人需要它。
谢谢!
答案 0 :(得分:14)
此语法为Throw(exception)
,其中exception是任何可复制值。
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(Throw(exception));
答案 1 :(得分:13)
只需编写一个引发异常的简单操作:
ACTION(MyThrowException)
{
throw MyException();
}
并像使用任何标准动作一样使用它:
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()));
在GoogleMock CookBook中查找ACTION
和参数化ACTION_P<n>
定义的完整文档。