EXPECT_CALL Google 测试中没有模拟
EXPECT_CALL without mock in Google Test
有没有什么方法可以通过 GoogleTest for c++ 来测试函数调用而不创建模拟对象,例如我们有以下生产代码:
if (a)
method(x);
我想测试在 a
为真且 a
为假的情况下是否会调用 method
。我想构建一个与 Google 测试的 EXPECT_CALL 完全相同的测试,但 EXPECT_CALL 仅适用于模拟对象的方法。就我而言,我宁愿不使用模拟(不需要创建任何对象)。
作为状态 here,
It's possible to use Google Mock to mock a free function (i.e. a C-style function or a static method). You just need to rewrite your code to use an interface (abstract class).
他们的 "It's possible" 具有误导性,因为您必须重写代码才能使用 class (抽象的,或由模板提供),因此不再使用免费功能。
如果您想伪造一个免费功能,您可能需要查看 Fake Function Framework (fff)。它允许您用可以以类似于 GoogleMock 的方式使用的虚假实现替换自由函数。
它与 GoogleMock 和 GoogleTest 无缝协作。
有没有什么方法可以通过 GoogleTest for c++ 来测试函数调用而不创建模拟对象,例如我们有以下生产代码:
if (a)
method(x);
我想测试在 a
为真且 a
为假的情况下是否会调用 method
。我想构建一个与 Google 测试的 EXPECT_CALL 完全相同的测试,但 EXPECT_CALL 仅适用于模拟对象的方法。就我而言,我宁愿不使用模拟(不需要创建任何对象)。
作为状态 here,
It's possible to use Google Mock to mock a free function (i.e. a C-style function or a static method). You just need to rewrite your code to use an interface (abstract class).
他们的 "It's possible" 具有误导性,因为您必须重写代码才能使用 class (抽象的,或由模板提供),因此不再使用免费功能。
如果您想伪造一个免费功能,您可能需要查看 Fake Function Framework (fff)。它允许您用可以以类似于 GoogleMock 的方式使用的虚假实现替换自由函数。
它与 GoogleMock 和 GoogleTest 无缝协作。