Настройка состояния с помощью Pact JVM в сложном приложении CDI - PullRequest
0 голосов
/ 18 июня 2020

Я работаю над прототипом того, как использовать Pact для тестирования контрактов в нашем приложении. Хотя настройка basi c, либо с JUnit 5, либо с плагином Maven, работает нормально, у меня действительно есть некоторые проблемы, когда дело доходит до настройки состояний провайдера.

Следуя документации Мне известно об аннотации @State. Итак, метод настройки состояния может выглядеть так:

@State("user already exists")
public void createUser() {
  // ...
}

Проблема, с которой я столкнулся, заключается в следующем. Наше приложение использует CDI, оно тяжеловесное, как и его модель данных. Даже для создания пользователя, как минимум, мне пришлось бы каким-то образом внедрить DAO для доступа к базе данных. Для более сложных состояний провайдера мне пришлось бы последовательно вставлять данные в несколько таблиц. Все это стало бы сложным.

Есть какие-нибудь рекомендации, как с этим справиться? Некоторые из моих первых идей ...

  1. Внедрение сервисов или хотя бы DAO в методы состояния провайдера Pact. Кажется, это создает новый уровень сложности с чем-то вроде Weld JUnit или Arquillan?
  2. Использование Mockito для имитации сервисов. Поскольку существуют функциональные тесты для самих сервисов, я бы использовал этот подход go, но я нашел только примеры для приложений Spring Boot, а не для CDI.
  3. Реализация конечной точки REST в приложении, предназначенном для вставить данные. Это решило бы проблемы с зависимостями, но сложная модель данных все еще существует, так что я ничего не выиграю.

Из того, что я знаю до сих пор, я бы предпочел №2, хотя это противоречит идее «использовать как можно больше производственного кода».

...