在googlemock中模拟文件写入过程

Mocking a file write process in googlemock

我刚开始使用 googlemock 模拟 C++ 项目。在我的例子中,我要测试的 class 观察一个被写入的文件,只要写入了最少量的新数据,它就会开始做一些工作。

我需要的是一个用于写入文件的进程的模拟 class。据我了解,我需要以(对于 googlemock)虚拟 class 的形式完全实现此 "writing to file" 功能,从中派生出模拟 class?模拟包装器最终用于测试和评估目的,对吧?

感谢帮助!

模拟,在 google 模拟术语中,是用于验证被测代码是否对其执行某些操作的对象。

您所描述的不是模拟,而是一个实用程序 class 可以触发您的测试操作代码。

当检测到它观察到的文件被写入时,你的class会做什么?例如,如果它执行对另一个对象的调用,那么您可以使用模拟对象来检查它是否使用正确的参数调用,例如写入文件的新大量数据。

我假设您的 "observer" class 的对象已收到通知 的对象写入了最少量的数据 "writter" class。在这种情况下,您需要实现一个抽象 class 表示您的 "writter" class 的接口,并且有 你真正的 "writter" class 从它继承并覆盖它的虚函数。 另外,让你的 mock "writter" class 实现继承自这个接口并且 并使用 MOCK_METHODn.

创建模拟实现

然后,让您的 "observer" class 接收来自 "writter" 对象的通知 使用指向抽象 class 的指针。这样,您可以使用依赖项 通过创建模拟在测试阶段注入以切换实现 "writter" 对象并将其地址传递给 "observer" 对象(而不是真正的 "writter" 对象)并在模拟对象上使用 EXPECT_CALL 设置测试用例。

这是我能提供的最佳建议,因为您没有向我们提供您的 classes 的详细描述。

编辑:

关于您的真实 "writter" class 的实现:您不必立即创建它,您现在可以使用 mock class 来测试 "observer" class 并将实现留到以后再说。当然,您最终必须实施它,因为它必须在生产代码中使用。