Как проверить (в google test), что функция вызывается с правильными параметрами - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть класс, и у этого класса есть метод ("original_method"), который использует два объекта разных типов. В этом методе есть два вызова: один вызов метода первого объекта, который возвращает значение, которое затем используется для вызова метода второго объекта. Мне было интересно, как правильно проводить юнит-тестирование такого поведения (с помощью google-test). В частности, я хочу проверить, что аргумент, предоставленный второму объекту, действительно является значением, возвращаемым из первого.

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

TEST_P(SomeTestSuite, checkingIfCalledWithTheRightArgument)
{
    EXPECT_CALL(*obj1, get_some_value()).WillOnce(Return(name_of_value));
    EXPECT_CALL(*obj2, do_a_calculation(name_of_value));

    obj0->call_original_method();
}

У меня есть приспособление для моего тестируемого исходного класса, у меня есть макеты для obj1 и obj2, я предоставляю значение для "name_of_value" в параметрах, и тест работает.

Моя проблема в том, что этокажется, это не правильный путь, я считаю, что мне не нужно передавать параметр, чтобы проверить такую ​​функциональность. Я был бы признателен, если бы кто-нибудь мог объяснить мне, как я должен был подойти к проблеме.

Спасибо.

РЕДАКТИРОВАТЬ:

Я думаю, что я мог бы сделать:

TEST_F(SomeTestSuite, checkingIfCalledWithTheRightArgument)
{
    EXPECT_CALL(*obj1, get_some_value());

    auto name_of_value = obj1->get_some_value();

    EXPECT_CALL(*obj2, do_a_calculation(name_of_value));

    obj0->call_original_method();
}

но я не уверен, что это захватывает (или на самом делетесты) оригинальное поведение ...

...