c++ - 使用 GMock 模拟将函数作为参数的方法
问题描述
我有如下课程。
我正在尝试注入依赖项,但一个函数正在使用函数指针。
如何设置功能的期望OnFileLoaded
?
我希望代码可以解决我的问题。
Class Dependency
{
void LoadFile()
{this->SignalFileLoaded();}
void SignalFileLoaded()
{
if (on_file_loaded_){on_file_loaded_();}
}
private:
std::function<void()> on_file_loaded_;
}
//////////////////////
class Test<typename T>
{
Test()
{
obj_dep->OnFileLoaded([this]() {
SignalFileLoaded();
});
}
void OnFileLoaded(std::function<void()> const &f)
{on_file_loaded_ = f;}
void SignalFileLoaded()
{
if (on_file_loaded_)
{
on_file_loaded_();
}
}
Void LoadFile()
{ this->SignalFileLoaded();}
void SetDependency(std::shared_ptr<T> obj)
{ obj_dep = obj;}
private:
std::shared_ptr<T> obj_dep;
std::function<void()> on_file_loaded_;
}
这是我的测试对象
MockTest
{
MockTest();
MOCK_METHOD1_T(OnFileLoaded,void(std::function<void()>));
MOCK_METHOD0_T(LoadFile,void());
}
TEST(testing_mock , signal_testing)
{
std::shared_ptr<MockTest> mocked_test;
Test<MockTest> testObj;
//How to set EXPECT_CALL for OnFileLoaded in this scenario
}
我不知道如何为这种方法设定期望。它在文件加载期间被调用。这会导致无趣的函数调用警告。
解决方案
推荐阅读
- java - JPanel 覆盖部分 JFrame 边框
- testing - 使用 TestCafe 和 Electron,有没有办法在最后一次测试之后但在应用程序关闭之前执行脚本?
- reactjs - It Hit WebDAV 客户端模块在打开 word 文档时要求登录
- python - 使用 matplotlib python 在 3D 中绘制多个相交平面
- tensorflow - Tensorflow、TRT模型安装问题
- database - 大型 JSON 作为本地数据库反应原生
- php - 将单词字符串转换为唯一数字
- rollupjs - rollup.js:如何禁用输出?
- php - Laravel Query Builder avg() 方法,浮点数问题
- twilio - Twilio Studio 在通话结束时发送并等待回复