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