NiceMock 一个将另一个 Mock 作为构造函数参数的 Mock
NiceMock a Mock that has another Mock as a constructor parameter
我想将 Mock 与 NiceMock 一起使用。 Mock 有一个构造函数,该构造函数将另一个 Mock 作为参数。这是我可以使用的一个小代码示例
class ClassA
{
ClassA() { }
};
template <class T>
class ClassB>
{
ClassB(ClassA & a) { } // constructor, no default constructor for this class
};
class ClassC
{
ClassC() { }
};
class MyTest : public Test
{
MockClassA a;
MockClassB<ClassC> * b = NULL;
SetUp()
{
b = new MockClassB<ClassC>(a);
}
...
};
效果很好,但如果我尝试像这样将 MockClassB 与 NiceMock 一起使用
MockClassA a;
NiceMock<MockClassB<ClassC>> * b = NULL;
SetUp()
{
b = new NiceMock<MockClassB<ClassC>>(a);
}
我收到一个编译错误 cannot convert argument 1 from 'const MockClassA' to 'ClassA &'
。请注意,错误出在 ClassA 上,它是 ClassB 的构造函数的参数类型。将 ClassA 包装在像 NiceMock<MockClassA> a
这样的 NiceMock 中没有帮助,我只是得到一个类似的错误:cannot convert argument 1 from 'const testing::NiceMock<MockClassA>' to 'ClassA &'
我还有其他模板 类 可以与 NiceMock 一起使用,但它们没有任何构造函数参数。
有什么想法吗?
ClassB
构造函数中的参数是对 ClassA
的非常量引用,这在 NiceMock
中是不允许的。根据documentation,限制之一是:
The constructors of the base mock (MockFoo) cannot have arguments passed by non-const reference
要使其正常工作,请改为传递 const 引用
ClassB(const ClassA & a) { }
或传递一个指向ClassA
的指针
ClassB(ClassA * a) { }
我想将 Mock 与 NiceMock 一起使用。 Mock 有一个构造函数,该构造函数将另一个 Mock 作为参数。这是我可以使用的一个小代码示例
class ClassA
{
ClassA() { }
};
template <class T>
class ClassB>
{
ClassB(ClassA & a) { } // constructor, no default constructor for this class
};
class ClassC
{
ClassC() { }
};
class MyTest : public Test
{
MockClassA a;
MockClassB<ClassC> * b = NULL;
SetUp()
{
b = new MockClassB<ClassC>(a);
}
...
};
效果很好,但如果我尝试像这样将 MockClassB 与 NiceMock 一起使用
MockClassA a;
NiceMock<MockClassB<ClassC>> * b = NULL;
SetUp()
{
b = new NiceMock<MockClassB<ClassC>>(a);
}
我收到一个编译错误 cannot convert argument 1 from 'const MockClassA' to 'ClassA &'
。请注意,错误出在 ClassA 上,它是 ClassB 的构造函数的参数类型。将 ClassA 包装在像 NiceMock<MockClassA> a
这样的 NiceMock 中没有帮助,我只是得到一个类似的错误:cannot convert argument 1 from 'const testing::NiceMock<MockClassA>' to 'ClassA &'
我还有其他模板 类 可以与 NiceMock 一起使用,但它们没有任何构造函数参数。
有什么想法吗?
ClassB
构造函数中的参数是对 ClassA
的非常量引用,这在 NiceMock
中是不允许的。根据documentation,限制之一是:
The constructors of the base mock (MockFoo) cannot have arguments passed by non-const reference
要使其正常工作,请改为传递 const 引用
ClassB(const ClassA & a) { }
或传递一个指向ClassA
ClassB(ClassA * a) { }