我正在使用gTest和gMock进行一些单元测试,试图测试是否向函数传递了protobuf消息,该消息在重复字段中包含特定值。我当前正在构建期望消息的精确副本,然后使用google::protobuf::util::MessageDifferencer
期望收到确切消息。
问题是我真的不想比较整个消息;我只想验证重复字段中是否存在特定值。可能还有其他我不在乎的值。
我正在考虑编写自定义匹配器,例如
MATCHER_P(FieldFinder, expected, "")
{
for (element : arg.repeated_field())
{
if (element == expected)
{
return true;
}
}
return false;
}
但是此匹配器将绑定到此特定的消息结构中,并且如果重复的字段位于其他位置,则不允许我重复使用它。有更好的方法吗?