use*_*594 14 c++ unit-testing exception throw googlemock
使用Google Mock 1.7.0,我有一个带有方法的模拟对象,我希望它被调用,在这种情况下,模拟的方法应该抛出异常.
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(???);
Run Code Online (Sandbox Code Playgroud)
是否存在引发异常的Google Mock操作?我没有在文档中找到它,但我怀疑到目前为止还没有人需要它.
谢谢!
The*_*ees 15
其语法是Throw(exception),其中exception是任何可复制值.
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(Throw(exception));
Run Code Online (Sandbox Code Playgroud)
πάν*_*ῥεῖ 15
只需编写一个抛出异常的简单操作:
ACTION(MyThrowException)
{
throw MyException();
}
Run Code Online (Sandbox Code Playgroud)
并像使用任何标准操作一样使用它:
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(MyThrowException());
Run Code Online (Sandbox Code Playgroud)
还有一个googlemock标准操作Throw(),它支持在执行操作时抛出异常(请注意,MyException必须是可复制的类才能使其正常工作!):
ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
.Times(1)
.WillRepeatedly(Throw(MyException()));
Run Code Online (Sandbox Code Playgroud)
在GoogleMock CookBook中查找完整的文档ACTION和参数化ACTION_P<n>定义.
| 归档时间: |
|
| 查看次数: |
11810 次 |
| 最近记录: |