Использование EXPECT_CALL для локальных методов - PullRequest
0 голосов
/ 07 июня 2019

Я знаю, EXPECT_CALL предполагается использовать для макетов классов и их объектов / методов.Но возможно ли когда-либо использовать это для ожидания вызовов локальных методов?

void Sample::Init()
{
   // some codes here...

   auto enabled = isFeatureEnabled();

   //some other things here
}

bool Sample::isFeatureEnabled()
{
   return lights_ and sounds_;
}

Я хочу EXPECT_CALL isFeatureEnabled() - это вообще возможно?

1 Ответ

1 голос
/ 14 июня 2019

Вы можете попробовать это, я считаю этот подход полезным:

class template_method_base {
public:
  void execute(std::string s1, std::string s2) {
    delegate(s1 + s2);
  }

private:
  virtual void delegate(std::string s) = 0;
};

class template_method_testable : public template_method_base {
public:
  MOCK_METHOD1(delegate, void(std::string s));
};

TEST(TestingTemplateMethod, shouldDelegateCallFromExecute) {
  template_method_testable testable_obj{};

  EXPECT_CALL(testable_obj, delegate("AB"));

  testable_obj.execute("A", "B");
}
...