У меня есть три службы в приложении Clojure:
Service A
: взаимодействует со сторонним API, вызывая потенциально опасные и необратимые изменения во внешней службе (не может быть написан мной)
Service B
: использует Службу A для достижения своих целей
Service C
: использует Службу B для достижения своих собственных целей
Мне нужно написать интеграционные тесты для Сервиса C, которые не не вызывают у сторонних разработчиков, поскольку они не предоставляют ни набора конечных точек тестирования, ни способа отменить мои изменения.
Я вижу два варианта:
Передача вызываемых функций в Службу C, например, как вводить экземпляры служб на языке ООП. Это приводит к значительным дополнительным расходам при использовании службы C.
Пересмотр опасных функций в Сервисе A с использованием with-redefs-fn
. Это требует знания деталей реализации сервисов, которые я не могу контролировать.
Я немного новичок в тестировании на функциональных языках, поэтому более чем возможно, что я упускаю что-то очевидное.