6

我想用方法的返回值分配一个 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>*’

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

4

1 回答 1

8

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

class TestFileToOsg : public testing::Test 
{
public:
   MockFileToOsg* _mockFileToOsg;
protected:
...

您的夹具应该实例化一个 NiceMock 并返回一个指向您的模拟对象的指针。

MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig()
{
   MockFileToOsg* fileToOsg = new NiceMock<MockFileToOsg>(...);
   return fileToOsg;
}

NiceMock<> 派生自 mockClass。所以 NiceMock<> 只能在实例化 MockObject 时使用。

于 2012-06-26T12:14:03.193 回答