如何测试(在Google测试中)具有正确参数的函数

时间:2019-11-03 13:13:34

标签: c++ googletest

我有一个类,这个类有一个使用两个不同类型对象的方法(“ 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();
}

但我不确定这是否捕获(或实际测试)原始行为...

0 个答案:

没有答案