是否可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在某些时候调用成员函数?
Can I use EXPECT_CALL to verify if the mock object's constructor calls a member function certain times?
>我有一个类,其构造函数调用成员函数,而成员函数又调用其他成员函数。我想使用 GMock 创建一个模拟类,并验证在构造模拟类对象时,这些成员函数在构造过程中只调用一次。但我观察到以下困境:
-
一方面,根据GMock的虚拟文档,"Google Mock要求在调用模拟函数之前设置期望,否则行为是未定义的。因此,您必须在执行对象的构造函数之前调用 EXPECT_CALL((。
-
另一方面,EXPECT_CALL(( 需要一个对象作为它的第一个参数,所以我们必须先构造这个对象,然后才能设置期望值。
上述观察是否正确,如果是,是否还有办法实现我希望做的事情?
听起来你最终会测试你班的模拟,但这不是很有帮助。默认情况下,模拟构造函数不会调用成员函数,因此您的EXPECT_CALL()
需要与强制 Mock 进行这些函数调用配对。将代码的行为放入自动测试工具中不是有用的情况。
与其尝试测试类的实现细节,不如创建对象并在公共接口上使用EXPECT
调用来验证构造函数是否已将对象置于正确的状态?
相关文章:
- 在这种情况下,java对象是否可以调用本机函数
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- 了解类型是否可调用
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- Windows 是否可以调用静态库中的 WinMain 函数C++
- 是否允许调用方对我的 Builder 类使用任何指针类型(包括智能指针)?
- 当指针在 cpp 17 中失去引用时,是否会调用非默认析构函数?
- Go 是否支持调用C++函数?
- c++ 中的抽象方法是否曾经调用过?
- 检查函数是否可调用
- "new"运算符是否总是调用构造函数?
- 我们是否需要调用SQLallochandle来分配SQLHSTMT,然后再调用SQLEXECTIRECT
- 当对话框中的任何小部件发出信号时,是否可以调用插槽
- 当它是 noop 时,是否需要调用非平凡析构函数?
- 是否可以调用将const rvalue作为参数的函数
- cpp 中的析构函数是否自动调用?即使析构函数没有提及非动态变量,它们也会被删除吗?
- 是否可以调用具有不同参数数量的函数,传递相同的参数包
- 对于每个渲染网格,我是否必须调用每个帧的GlverTexAttribPointer()
- 测试是否已调用加入
- EXE 是否可以调用启动它的 DLL