C++ 使用gmock模拟客户端代码中复制的对象

C++ 使用gmock模拟客户端代码中复制的对象,c++,unit-testing,gmock,C++,Unit Testing,Gmock,我真的需要一些帮助来模拟这个场景中的依赖关系 我有一个客户端函数需要测试。它获取第三方API资源并对其调用方法,用输出填充其其余参数: void ClassA::enumerateConnectedDevices(ThirdPartyAPI::BusManager & busMgr, QList<QByteArray> &devices, QStringList &descriptions) 使用该调用的客户端代码如下所示: ThirdPartyAPI::E

我真的需要一些帮助来模拟这个场景中的依赖关系

我有一个客户端函数需要测试。它获取第三方API资源并对其调用方法,用输出填充其其余参数:

void ClassA::enumerateConnectedDevices(ThirdPartyAPI::BusManager & busMgr, QList<QByteArray> &devices, QStringList &descriptions)
使用该调用的客户端代码如下所示:

ThirdPartyAPI::Error busMgr.GetNumOfCameras(...)
ThirdPartyAPI::Error err = busMgr.GetNumOfCameras(&numCameras);

if (err != ThirdPartyAPI::ERROR_OK) { // compares against some enum
    cout << "Error: " << err.GetDescription();
}
我遇到的问题是从GetNumberOfCameras返回的错误复制到err局部变量。模拟BusManager和Error类直到复制完成为止。由于mock error是ThirdPartyAPI::error的一个子类,赋值操作符将mock切掉。第三方API构造并返回有效的错误对象。客户端代码只能复制或分配它们

我所需要的只是从我的模拟总线管理器返回有效的模拟错误对象,以使SUT方法可测试。只要意图保持不变,我愿意重构SUT方法

如有任何建议,将不胜感激

干杯

亚历克斯