使用NiceMock作为GoogleMock的实例变量

mar*_*a90 6 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();
}
Run Code Online (Sandbox Code Playgroud)

夹具方法是:

MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig()
{
    MockFileToOsg* fileToOsg = new MockFileToOsg(...);
    return fileToOsg;
}
Run Code Online (Sandbox Code Playgroud)

编译器抛出以下错误:

error: invalid conversion from ‘MockFileToOsg*’ to ‘testing::NiceMock<MockFileToOsg>*’
Run Code Online (Sandbox Code Playgroud)

如何使用fixture方法的返回值分配实例变量?

Jen*_*ich 8

在你的测试类中,你应该只有一个指向你的模拟对象的指针:

class TestFileToOsg : public testing::Test 
{
public:
   MockFileToOsg* _mockFileToOsg;
protected:
...
Run Code Online (Sandbox Code Playgroud)

你的fixture应该实例化一个NiceMock并返回一个指向你的mockobject的指针.

MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig()
{
   MockFileToOsg* fileToOsg = new NiceMock<MockFileToOsg>(...);
   return fileToOsg;
}
Run Code Online (Sandbox Code Playgroud)

NiceMock <>派生自mockClass.So NiceMock <>只能在实例化MockObject时使用.