Макет метода, который принимает функцию в качестве параметра, используя GMock - PullRequest
0 голосов
/ 04 января 2019

У меня есть классы следующим образом.

Я пытаюсь внедрить зависимость, но функция получает указатель на функцию.

Как установить Ожидание для функции 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
}

Я не знаю, как установить ожидание для этого метода.И он вызывается во время загрузки файла.Что приводит к неинтересному предупреждению о вызове функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...