Проверьте, содержит ли повторяющееся поле в сообщении protobuf значение - PullRequest
1 голос
/ 06 марта 2020

Я провожу некоторое модульное тестирование с использованием gTest и gMock, пытаясь проверить, передана ли функция сообщение protobuf, которое содержит значение c в повторяющемся поле. В настоящее время я создаю точную копию ожидаемого сообщения, а затем использую google::protobuf::util::MessageDifferencer, чтобы ожидать получения точного сообщения.

Проблема в том, что я не хочу сравнивать все сообщение; Я только хочу убедиться, что указанное значение c существует в повторяющемся поле. Там могут быть и другие значения, которые меня не волнуют.

Я думал о написании собственного сопоставителя, что-то вроде

MATCHER_P(FieldFinder, expected, "")
{
  for (element : arg.repeated_field())
  {
    if (element == expected)
    {
      return true;
    }
  }
  return false;
}

Но этот сопоставитель был бы привязан к этой спецификации c структура сообщения и не позволил бы мне использовать его повторно, если повторяющееся поле находится в другом месте. Есть ли лучший способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...