单元测试——不直接使用被模拟对象的Google Mock (c++)

unit testing - Google Mock without using the mocked object directly (C++)

本文关键字:Google Mock c++ 对象 单元测试 模拟      更新时间:2023-10-16

我是Google Mock的新手。我有一个类A,它使用类B。我想写一个测试,将测试A,不运行B,因为B使用外部世界。

我的问题:我如何调用A上的测试,并让它使用B的mock实例?

A a;
Mock_B mock_b;
EXPECT_CALL(mock_b, foo(4));
//test call of a
EXPECT_EQ(0, a.bar());

当我这样做时,a使用B而不是Mock_B

"我如何调用a上的测试,并让它使用B的mock实例?"

你不能,除非你改变A类使用B的接口,而不是直接使用class B实例。

在这里有更深入的解释:Google Mock的初学者介绍。