【发布时间】:2015-09-17 21:28:31
【问题描述】:
我有一个测试类,它实例化了一个我希望被模拟的类。这可能在 gmock 框架内吗?根据我的阅读,似乎必须创建模拟对象并将其传递给正在测试的对象,这不是我想要的。
我已经得到它,以便我可以将我的模拟类注入源代码,但我不知道如何让它生成适当的对象。
【问题讨论】:
-
你能解释一下这个问题背后的原因吗?我试图理解你为什么要模拟返回对象......基本上答案很简单你不能模拟对象,但我们都在这里学习和互相帮助......
-
如果我想模拟一个类,那么我希望使用我的类,即使它是在我正在测试的类中生成的。假设它是一个临时对象,已生成、使用和销毁。有时在同一功能内,有时不在。有时会在课堂外发布,有时不会。
-
只有当它对外部资源等进行复杂的操作/影响时,你才应该模拟对象......如果你的情况与我提到的情况之一匹配,那么你可能违反
SRP(如果所以,你应该重构代码)。如果对象是PoD对象,则根本不应该模拟它,而是可以在方法结束时验证对象的状态... -
@OldFox,我只是在开发用于向遗留应用程序添加测试的框架。我主要关心的是能够替换现有的类定义,因为这是一个不需要虚拟化依赖类接口的遗留应用程序。在这个后期(20 多年后)切换它需要太多时间。由于类型不一致,它是否应该完成是次要的。但是,感谢您的信息。我会调查你说的信息。谢谢。
标签: c++ unit-testing gmock