【发布时间】:2014-06-18 21:41:13
【问题描述】:
我有一个 A 类,它在其构造函数中实例化 B 类的对象。我想用 B 的模拟对象来测试 A。
不,我不能将 B 的对象作为参数传递。有没有其他办法?
我看到一篇文章http://www.ibm.com/developerworks/library/j-mocktest/index.html,其中“Mock in the Middle”是一个有趣的话题,但那是在Java中。在 C++ 中可以吗?
class B {...};
class A {
private:
B* b;
public:
A() {
b = new B();
}
~A() {..}
};
编辑:
一般来说,对象可以根据需要以其他方法创建。例如,
class A {
...
int doSomething() {
// Create an object of class B
b = new B();
}
};
【问题讨论】:
-
你能创建一个新的构造函数 take b 吗?
-
我可以,但这是在类中创建对象的示例之一。通常,可以按需创建对象,例如在方法中。但这很好,让我编辑问题以使其更清楚。
-
听起来你需要工厂对象/函数
-
为您的 B 对象(或任何您需要的地方)添加一个带有工厂的构造函数,并根据需要模拟它
-
你能举个例子吗?因为如果我在构造函数中将工厂作为参数,那么实例化 A 的地方也需要实例化该工厂,这就是我要避免的全部事情。
标签: c++ unit-testing gmock