Как имитировать статический метод с помощью gtest/gmock? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как имитировать статический метод с помощью gtest/gmock? [закрыто]

Сообщение Anonymous »

Я пытаюсь написать модульный тест для функции OnMethod в своем приложении, используя gtest/gmock. Функция OnMethod вызывает статический метод ::Service::Daemon::Run(*this, *this), который я хочу имитировать, чтобы он возвращал "SUCCESS".
Вот упрощенная версия кода:

Код: Выделить всё

class App {
public:
auto OnMethod() -> std::string {
std::string result{ ::Service::Daemon::Run(*this, *this) };
return result;
}
std::string Start(){
std::string result = do_start_something();
return result;
}
std::string Stop(){
std::string result = do_stop_something();
return result;
}
auto wait(){
wait something
}
};

namespace Service {
class Daemon {
public:
static std::string Run(const App& handler, const App& service) {
service.Start();
service.wait();
Service.Stop();

}
};
}
Желаемое поведение: я хочу создать макет статического метода ::Service::Daemon::Run(*this, *this), чтобы он возвращал «SUCCESS» во время тестирования. Как мне справиться с таким издевательством. Мое текущее решение заключается в том, что я создаю MockApp, наследующий от App, и определяю метод-макет для Start, Stop:

Код: Выделить всё

class MockApp : public App {
public:
MOCK_METHOD(::std::string, Start, (), (override));
MOCK_METHOD(::std::string, Stop, (), (override));
}

TEST_F(MockApp, OnMethod){
MockApp *mockapp;
EXPECT_CALL(mockapp, Start(::testing::_).WillOnce(::testing::Return(return_value));
EXPECT_CALL(mockapp, Stop(::testing::_).WillOnce(::testing::Return(return_value));
mockapp->OnMethod();
}
Однако, когда я запускаю модульный тест для OnMethod, они всегда выполняют настоящие методы Start и Stop вместо вызова макета. Кто-нибудь раньше сталкивался с такой ситуацией?Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/785 ... test-gmock
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Googletest (gtest) / googlemock (gmock): почему «Interleav [ing]` wearm_call () `s и вызовы к макетным функциям« неопред
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как проверить параметры/args в gtest/gmock в weals_call
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как остановить gtest на первом неожиданном вызове Gmock
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать константные методы с помощью gmock
    Anonymous » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • GMOCK метод, принимающий переменные аргументы
    Anonymous » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»