首页 > 解决方案 > 使用 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
}

我不知道如何为这种方法设定期望。它在文件加载期间被调用。这会导致无趣的函数调用警告。

标签: c++linuxunit-testinglambdagmock

解决方案


推荐阅读