gpt4 book ai didi

c++ - 如何使用 Google Mock 模拟模板化方法?

转载 作者:IT老高 更新时间:2023-10-28 22:15:02 51 4
gpt4 key购买 nike

我正在尝试模拟一个模板化方法。

这是包含要模拟的方法的类:

class myClass
{
public:
virtual ~myClass() {}

template<typename T>
void myMethod(T param);
}

如何使用 Google Mock 模拟方法 myMethod?

最佳答案

在以前的 Google Mock 版本中,您只能模拟虚函数,请参阅 documentation在项目的页面中。

允许模拟的最新版本 non-virtual methods ,使用他们所谓的高性能依赖注入(inject)

正如用户@congusbongus 在此答案下方的评论中所说:

Google Mock relies on adding member variables to support method mocking, and since you can't create template member variables, it's impossible to mock template functions

解决方法,by Michael Harrington in the googlegroups link从评论来看,是为了使模板方法专门化,这些方法将调用可以模拟的普通函数。它不能解决一般情况,但可以用于测试。

struct Foo
{
MOCK_METHOD1(GetValueString, void(std::string& value));

template <typename ValueType>
void GetValue(ValueType& value);

template <>
void GetValue(std::string& value) {
GetValueString(value);
}
};

关于c++ - 如何使用 Google Mock 模拟模板化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426067/

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