我是gmock的新手,有时我不得不编写gmock单元测试。
我在说ClassServer的类中有一个名为join_server()的函数,并且ClassServer有一个对应的MOCK类。我也有一个名为create_service(ClassServer&RefToClassServer)的静态函数,在另一个类ClassService中定义。静态函数create_service()使用对ClassServer的引用调用join_server()。
我正在尝试编写一个gmock测试,以断言只要调用create_service()就会调用join_server()。但我得到以下错误。
预期:将被调用一次实际:从未致电-不满意和活跃
我的gmock测试就是这样的东西
BOOST_AUTO_TEST_CASE(test_create_service)
{
EXPECT_CALL(referenceToClassService, join_server());
create_service(referenceToClassService);
}
gmock是否不支持检查通过静态函数调用的函数?知道如何执行create_service()时断言join_server()被调用吗?
在join_server()中,我正在打印消息,并且确认只要调用create_service(),就会调用join_server()。
我可以提供完整的代码,但首先我想检查它是否受支持。
注意:join_server()也由另一个类的成员函数(例如DummyClass)调用。此成员函数不是静态的,在这种情况下,我对EXPECT_CALL(referenceToDummyClass,join_server())的检查按预期成功。
我不明白为什么静态函数调用它会失败。谢谢
EXPECT_CALL
需要第一个参数的模拟对象如您所知,单元测试通常具有以下结构
如果涉及到您的代码,则可以是
refereceToClassService
-使用-> referenceToClassServer
您应该对DOC(referenceToClassServer
)设置期望值并将其传递给SUT(referenceToClassService
)
如果最终referenceToClassService
会使用模拟的referenceToClassServer
我可以看到您正在为referenceToClassService
设置期望值,因此应将其更改为referenceToClassServer
,因为refereceToClassService
不是模拟对象
EXPECT_CALL(referenceToClassService, join_server());
EXPECT_CALL(referenceToClassServer, join_server());
※如果有足够的代码来更好地了解您的情况,那就更好了