我只是在学习使用 Google Mock。当我测试一个可以将模拟对象作为指针或引用(依赖注入)传递给它的类时,它工作正常。当我有一个不使用 DI 的课程时,我还没有找到解决方案。
我们目前有很多不使用 DI 和接口的代码,例如:
#include "ReadDbObjects.h"
class ObjectManager
{
public:
ObjectManager()
{
ReadDbObjects db_reader;
mObjects = db_reader.ReadAll();
}
private:
vector<MyObject> mObjects;
}
(这是极其简化的,但应该解释问题)
我们目前通过仅为单元测试创建一个名为 ReadDbObjects.cpp 的文件(其中包括带有类声明的原始 ReadObjects.h)来测试类似的东西,该文件静态链接到单元测试。在这个文件中,我们模拟了 ReadAll-Method,因此它返回了我们测试所需的对象。这个文件很难维护,它需要另一个在 ReadObjects.cpp 和单元测试中都知道的文件,因此测试和模拟的 ReadObjects 类之间的值可以双向传递。
- 在这个例子中,有没有办法使用 gmock 来模拟 ReadObjects?
- 当我需要模拟基类时,可以使用 gmock 吗?在这里,我们通过将模拟的 cpp 基类文件链接到单元测试中来使用相同的机制。