gmock可以模拟一个未定义的方法吗?

问题描述 投票:1回答:1

我有一个测试对象,我想在实际对象中不需要的方法上调用EXPECT_CALL,是否可以模拟这种未定义的新方法?

struct MockObject {
    MOCK_METHOD2(onRecv, void(void* buffer, size_t len));
};

MockObject不继承任何其他类。是否支持gmock的用例?

c++ googletest gmock
1个回答
2
投票

据我所知,你在这里所拥有的是明确定义的行为。据我所知,MOCK_METHOD宏所做的就是连接方法原型和设置期望所需的其他元素。因此,虽然MOCK_METHOD宏系列主要用于开发从需要测试的类派生的模拟类,但实际使用本身对我来说是理智的。

虽然谷歌模拟很整洁,但如果您在代码审查中发现有人抱怨这一点,您可以轻松编写自己的模拟方法。

struct MockObject {
   void onRecv(void* buffer, size_t len) {
        buf_ = buffer;
        len_ = len;
        onRecvCallCount_++;
   }
   void * buf_;
   size_t len_;
   int onRecvCallCount_ = 0;
};

// actual test setup being
void Setup() {
    mockObject.onRecvCallCount_ = 0
}

// The rest of the assertions/expectations get wrapped inside the 
// if (mockObject.onRecvCallCount_) { } block

因此,谷歌模拟宏通过提供像MOCK_METHOD这样的简单宏来保存设置期望所需的所有额外布线。所以不要犹豫使用它。

© www.soinside.com 2019 - 2024. All rights reserved.