c++ - 谷歌模拟框架匹配器元素数组比较
问题描述
我有一个可以打电话的谷歌测试
EXPECT_THAT(unit.OnEndStartup(), ::testing::ElementsAre(
IsEvent(Result::NoError,Type::S , ""),
IsEvent(Result::NoError,Type::N , ""),
IsEvent(Result::NoError,Type::E , ""),
IsEvent(Result::NoError,Type::C , "")
));
IsEvent
是一个MATCHER_P2
定义如下。
unit.OnEndStartup() returns vector<Info> where struct Info {
Result result;
PackageType type;
std::string newVersion;
inline bool operator==(Info e1)
{
return (e1.result == result
&& e1.package == package
&& e1.newVersion == newVersion);
}
}
该EXPECT_THAT()
调用在文件中的多个位置使用。我正在寻找一种合理的方法来重构对 IsEvent() 的多次调用。
我已经定义
std::array<Info, 4> expected_default_list = {
Info(Result::NoError, Type::S, ""),
Info(Result::NoError, Type::N, ""),
Info(Result::NoError, Type::E, ""),
Info(Result::NoError, Type::C, "")
};
EXPECT_THAT(unit.OnEndStartup(), ::testing::ElementsAreArray(expected_default_list));
这是给模板错误。我重构代码的方法是否正确?我得到的错误是
error: no match for ‘operator==’ (operand types are ‘const Info’ and ‘const Info’)
bool operator()(const A& a, const B& b) const { return a == b; }
解决方案
推荐阅读
- bash - 需要帮助将三个 sed 调用合并为一个
- javascript - useState with react 给我关于 google recaptcha 的 onChange 处理程序的问题
- python - 我的说命令一直出错,我不知道该怎么做
- python - 交换函数的执行顺序
- android - 从凌空错误响应中获取响应代码
- python - 更改文件扩展名-TypeError:只能将元组(不是“str”)连接到元组
- android - Android 数据绑定 - 找不到接受参数类型“long”的 <> 的 getter
- api - 谁负责正确显示时区?
- sorting - Proc Report 降序排序
- reactjs - 如何要求接口成员提供响应数据?