GMock与EXPECT_CALL不匹配

时间:2016-03-23 17:03:05

标签: c++ googletest gmock

我有一个模拟功能,当我使用任何匹配器(' _')进行单元测试时单元测试失败,因为GMock无法找到匹配的功能。

这是我的模拟类和函数:

class MockedClass {
public:
    MockedClass() {};
    ~MockedClass() {};
    MOCK_METHOD1(unregisterClient, bool(const ThriftClient& tClient));
};

class ConnectionClass {
public:
    ConnectionClass() {};
    ~ConnectionClass() {};

    bool unregisterClient(ThriftClient& tClient)
    {
        bool ret = false;
        if (mock_ != NULL)
            ret = mock_->unregisterClient(tClient);
        return ret;
    }

    static MockedClass *mock_;
};

MockedClass *ConnectionClass::mock_ = NULL;

这是测试中的功能:

class RealObject {
public:
    RealObject(ConnectionClass &cc);
    void unregister();

private:
    ConnectionClass &cc_;
    ThriftClient tClient_;

}

RealObject::RealObject(ConnectionClass &cc) {
    cc_ = &cc;
}

void RealObject::unregister() {
    cc_->unregisterClient(tClient_);
}

这是测试功能:

TEST_F(Test, UnregisterTest) {
    MockedClass mclass;
    ConnectionClass cc;
    cc.mock_ = &mclass;
    RealObject obj(cc);

    EXPECT_CALL(mclass, unregisterClient(_)).WillOnce(Return(true));

    obj.unregister(); // Calls mocked function
}

以下是失败消息:

  

Test.cpp:142:失败实际功能呼叫计数不匹配

     

EXPECT_CALL(mclass,unregisterClient(_))...

     

预期:被召唤一次

     

实际:从未打过电话 - 不满意和活跃

我也尝试过:

EXPECT_CALL(mclass, unregisterClient(Matcher<const ThriftClient&>(_))).WillOnce(Return(true));

EXPECT_CALL(mclass, unregisterClient(An<const ThriftClient&>())).WillOnce(Return(true));

所有人都有相同的失败信息。

为什么我收到此失败消息?我不明白为什么GMock不能与函数调用匹配。

0 个答案:

没有答案