使用GMock模拟将函数作为参数的方法

时间:2019-01-04 03:05:41

标签: c++ linux unit-testing lambda 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_;
}

这是我的测试对象。<​​/ p>

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
}

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

0 个答案:

没有答案