如何生成在正在测试的 class 中创建的模拟对象?

How to generate a mocked object that is created within the class being tested?

我有一个测试 class,它实例化了一个我希望被模拟的 class。这在 gmock 框架内可能吗?从我读到的内容来看,似乎必须创建模拟对象并将其传递给被测试的对象,这不是我想要的。

我已经知道了,所以我可以将我的模拟 class 注入到源中,但我不知道如何让它生成适当的对象。

答案是将EXPECT_CALL()放入构造函数中,使用*this作为第一个参数。当然,这只有在您希望它始终相同时才有效。

如果预期行为因实例而异,这将变得更加复杂,除非每个实例使用不同的构造函数。

如果使用相同的构造函数,那么您的模拟 class 可以使用静态计数器,它可以根据实例计数更改预期的值。