我想为NiceMock分配一个方法的返回值。 NiceMock是一个实例变量。
class TestFileToOsg : public testing::Test
{
public:
NiceMock<MockFileToOsg>* _mockFileToOsg;
protected:
virtual void SetUp();
};
void TestFileToOsg::SetUp()
{
_mockFileToOsg = FixtureFileToOsg::getMockFileToOsgWithValidConfig();
}
夹具方法是:
MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig()
{
MockFileToOsg* fileToOsg = new MockFileToOsg(...);
return fileToOsg;
}
编译器抛出以下错误:
error: invalid conversion from ‘MockFileToOsg*’ to ‘testing::NiceMock<MockFileToOsg>*’
如何使用fixture方法的返回值分配实例变量?
答案 0 :(得分:8)
在你的测试类中,你应该只有一个指向你的模拟对象的指针:
class TestFileToOsg : public testing::Test
{
public:
MockFileToOsg* _mockFileToOsg;
protected:
...
你的灯具应该实例化一个NiceMock并返回一个指向你的模拟对象的指针。
MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig()
{
MockFileToOsg* fileToOsg = new NiceMock<MockFileToOsg>(...);
return fileToOsg;
}
NiceMock&lt;&gt;派生自mockClass.So NiceMock&lt;&gt;必须仅在实例化MockObject时使用。