gpt4 book ai didi

c++ - gmock 可以模拟未定义的方法吗?

转载 作者:行者123 更新时间:2023-11-30 03:17:00 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

虽然 google mocks 很简洁,但如果您发现有人在代码审查中提示这个,您可以轻松地编写自己的 mock 方法而不费吹灰之力。

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

因此,google mock 宏通过提供像 MOCK_METHOD 这样的简单宏,省去了设置期望所需的所有这些额外连接。所以请毫不犹豫地使用它。

关于c++ - gmock 可以模拟未定义的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com