我有一个类,这个类有一个使用两个不同类型对象的方法(“ 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();
}
但我不确定这是否捕获(或实际测试)原始行为...