Ситуация, в которой я нахожусь:
Я пишу инструмент для тестирования API. И хотите сравнить фактические результаты API с ожидаемым результатом.
- Я обращаюсь к json API и анализирую результат в структуре (api_result)
- Я загружаю предопределенный json из локального хранилища, а также анализирую его в структуру того же типа (Ожидаемый_результат)
- Теперь я хочу сравнить их
Что я хочу архивировать:
Эти две структуры результата типа должны сравниваться на основе полей в поле Ожидаемый_результат.
* ** 1023 тысяча двадцать-дв * Пример
- Ожидаемый_результат имеет поля b1, b2, b4
- api_result имеет поля b2, b4, b5, b6
Теперь я хочу сравнить только поля b1, b2, b4, а также только если они не пусты (0, "", nil).
Другие поля в api_result не важны.
Пока пробовал
Я уже копался в рефлексе.DeepEqual () и затем в go-cmp. Но в обоих случаях проблема заключается в том, что функции сравнения симметричны (или должны быть) (func (x, y) == func (y, x)).
С этой симметрией я не могу различить два сравниваемых элемента.
Большое спасибо за ваши идеи и помощь!