在Google Test中没有模拟的EXPECT_CALL

时间:2018-06-07 20:57:19

标签: c++ unit-testing googletest gmock

有没有办法通过GoogleTest测试函数调用c ++而不创建模拟对象,例如我们有以下生产代码:

if (a)
    method(x);

我想测试在method为True且a为False的情况下是否会调用a。我想构建一个与Google Test的EXPECT_CALL完全相同的测试,但EXPECT_CALL仅适用于模拟对象的方法。在我的情况下,我宁愿不使用模拟(不需要创建任何对象)。

2 个答案:

答案 0 :(得分:2)

作为州here

  

可以使用Google Mock来模拟自由函数(即C风格函数或静态方法)。您只需要重写代码以使用接口(抽象类)。

他们的“它可能”具有误导性,因为您必须重写代码以使用类(抽象或由模板提供),因此不再使用自由函数。

答案 1 :(得分:0)

如果您想伪造免费功能,可能需要查看Fake Function Framework (fff)。它允许您使用与GoogleMock类似的伪实现替换自由函数。

它可与GoogleMock和GoogleTest无缝协作。