gpt4 book ai didi

gmock - 设置 EXPECT_CALL 将调用重定向到原始方法

转载 作者:行者123 更新时间:2023-12-03 17:05:33 27 4
gpt4 key购买 nike

我有一个类,其中包含几个相互依赖的方法。让我们说 foo()、bar() 和 baz()。

当我测试 bar() 时我需要模拟 foo() 的行为,当我测试 baz() 时我需要模拟 bar() 的行为。

如果我为 baz 模拟 bar,我不能使用相同的模拟类来测试带有模拟 foo() 的 bar。

我的问题是我可以设置 EXPECT_CALL 来实际调用原始行为以及如何调用。这将消除创建多个 Mock 类的需要。

最佳答案

答案可以在 gMock Cookbook 中找到.
总之,你需要写

class MockFoo : public Foo {
public:
// Mocking a pure method.
MOCK_METHOD(void, Pure, (int n), (override));
// Mocking a concrete method. Foo::Concrete() is shadowed.
MOCK_METHOD(int, Concrete, (const char* str), (override));
};

ON_CALL(foo, Concrete).WillByDefault([&foo](const char* str) {
return foo.Foo::Concrete(str);
});
或者
EXPECT_CALL(foo, Concrete).WillOnce([&foo](const char* str) {
return foo.Foo::Concrete(str);
});

关于gmock - 设置 EXPECT_CALL 将调用重定向到原始方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556601/

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