使用谷歌模拟模拟转换运算符int()

时间:2014-12-17 23:08:56

标签: c++ unit-testing googlemock

我有一个声明了以下运算符的类:

Foo::operator int() const
{
    return m_bar; // a private variable with type int of the class Foo
}

我想模仿Foo班,但我在这个问题上遇到了困难。我在网上查了一下,在这种情况下看不到像int()这样的转换运算符的解决方案。有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定是否有办法直接模拟转换操作符,但这些方面的内容可行:

class MockFoo : public Foo {
public:
    MOCK_CONST_METHOD0(conversionOperator, int());

    virtual operator int() const { return conversionOperator(); }
};

这将按预期使用:

TEST(ConversionOperator, Returns42) {

    MockFoo f;
    EXPECT_CALL(f, conversionOperator()).WillOnce(Return(42));

    int value = f;
    ASSERT_EQ(42, value);
}