У меня есть класс, и у этого класса есть метод ("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();
}
но я не уверен, что это захватывает (или на самом делетесты) оригинальное поведение ...