У меня есть два программных компонента: мое приложение и библиотека (которая принадлежит моей компании, но другой команде), которая используется приложением.Библиотека является клиентской библиотекой для некоторого сервиса и выполняет HTTP-запросы.Библиотека также отображает HTTP-ответ на внутреннее представление приложения.Это делается путем введения класса отображения в библиотеку приложением.
У меня уже есть модульные тесты для класса отображения и для приложения, тогда как вызов клиентской библиотеки всегда проверяется.
Сейчас я думаю о тестировании интеграции библиотеки, и я не уверен, каков наилучший способ сделать это:
Смоделируйте вызов библиотеки и проверяйте только то, что он вызывается справильные параметры
- Pro: Если внутренние компоненты библиотеки изменяются (с необратимым изменением), мне не нужно адаптировать свои тесты.
- Con:Класс отображения не проверен на интеграцию.Я не могу быть уверен, что библиотека правильно настроена или что параметры, которые маппер получает из библиотеки, соответствуют ожиданиям.
Только макетHTTP-вызов, выполняемый библиотекой
- Pro: класс отображения и конфигурация библиотеки (если я ее правильно настроил) проверяются.
- Con: мне нужновыяснить внутренности библиотеки и проверить, как будет выглядеть HTTP-вызов каждого теста.Также, если библиотека обновится до новой версии службы, мне нужно будет адаптировать все HTTP-макеты, и на самом деле не должно заботиться о том, как библиотека работает внутри.
Замените HTTP-вызов в библиотеке на ложную (= фиктивную) реализацию в памяти во время тестирования
- Pro: все проверено + тесты устойчивы к изменениям библиотеки.
- Con: Это попытка реализовать и поддерживать ложную реализацию.В зависимости от службы это может означать восстановление функциональности службы в библиотеке.Кто должен нести ответственность (реализация + сопровождение) за фальшивую стратегию?Моя команда или команда, которая владеет библиотекой?
Я поддерживаю последнее замечание, но, учитывая, что внутренности нашей библиотеки редко меняются, я неуверен, что фальшивая стратегия стоит усилий.
Что вы думаете по этому поводу?Можете ли вы придумать другое решение?