使用NiceMock作为GoogleMock的实例变量

时间:2012-06-26 09:34:11

标签: c++ unit-testing googlemock

我想为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方法的返回值分配实例变量?

1 个答案:

答案 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时使用。