Как правильно интегрировать тестирующие библиотеки, которые запускают внедренный код? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть два программных компонента: мое приложение и библиотека (которая принадлежит моей компании, но другой команде), которая используется приложением.Библиотека является клиентской библиотекой для некоторого сервиса и выполняет HTTP-запросы.Библиотека также отображает HTTP-ответ на внутреннее представление приложения.Это делается путем введения класса отображения в библиотеку приложением.

У меня уже есть модульные тесты для класса отображения и для приложения, тогда как вызов клиентской библиотеки всегда проверяется.

Сейчас я думаю о тестировании интеграции библиотеки, и я не уверен, каков наилучший способ сделать это:

  • Смоделируйте вызов библиотеки и проверяйте только то, что он вызывается справильные параметры

    • Pro: Если внутренние компоненты библиотеки изменяются (с необратимым изменением), мне не нужно адаптировать свои тесты.
    • Con:Класс отображения не проверен на интеграцию.Я не могу быть уверен, что библиотека правильно настроена или что параметры, которые маппер получает из библиотеки, соответствуют ожиданиям.
  • Только макетHTTP-вызов, выполняемый библиотекой

    • Pro: класс отображения и конфигурация библиотеки (если я ее правильно настроил) проверяются.
    • Con: мне нужновыяснить внутренности библиотеки и проверить, как будет выглядеть HTTP-вызов каждого теста.Также, если библиотека обновится до новой версии службы, мне нужно будет адаптировать все HTTP-макеты, и на самом деле не должно заботиться о том, как библиотека работает внутри.
  • Замените HTTP-вызов в библиотеке на ложную (= фиктивную) реализацию в памяти во время тестирования

    • Pro: все проверено + тесты устойчивы к изменениям библиотеки.
    • Con: Это попытка реализовать и поддерживать ложную реализацию.В зависимости от службы это может означать восстановление функциональности службы в библиотеке.Кто должен нести ответственность (реализация + сопровождение) за фальшивую стратегию?Моя команда или команда, которая владеет библиотекой?

Я поддерживаю последнее замечание, но, учитывая, что внутренности нашей библиотеки редко меняются, я неуверен, что фальшивая стратегия стоит усилий.

Что вы думаете по этому поводу?Можете ли вы придумать другое решение?

1 Ответ

0 голосов
/ 25 февраля 2019

Я бы создал помощников внутри библиотеки, которые позволили бы вам высмеивать ответ HTTP.Следовательно, вы увидите код, работающий внутри библиотеки, и вы можете использовать библиотеки, которые проверяют формат JSON, чтобы убедиться, что вы ожидаете HTTP-запрос / ответ.

В этом смыслевы проверяете i) библиотека фактически работает с вашей системой; ii) обрабатывает правильный HTTP-ответ;таким образом, ваш помощник может быть достаточно простым, так что разработчикам нужно будет только предоставить содержимое ответа http

...