Привет, у меня есть весенний проект, в котором есть пружинная безопасность для аутентификации пользователей с использованием поставщика OAUTH, и мне нужно использовать Spring Cloud Contract для создания фиктивного сервера для потребительского тестирования.
Когда я бегу ./gradlew clean :order-service:contractTest
. Вылетает следующая ошибка
delegate cannot be null. Ensure a Bean with the name springSecurityFilterChain implementing Filter is present or inject the Filter to be used.
java.lang.IllegalStateException: delegate cannot be null. Ensure a Bean with the name springSecurityFilterChain implementing Filter is present or inject the Filter to be used.
Если вы посмотрите на мой SecurityConfig
Фильтр безопасности уже настроен. Итак, как решить эту ошибку и заставить мой contractTest
работать правильно ??
Есть некоторые проблемы с BaseClass.
@SpringBootTest
. Не надо @ExtendedWith
Mockito.reset
в очистке вообще не нужен.В проекте WebMvc исключите UserDetailsServiceAutoConfiguration
и SecurityAutoConfiguration
в тестовом контексте, проверьте мой пример.
В проекте WebFlux просто исключите ReactiveUserDetailsServiceAutoConfiguration
, ReactiveSecurityAutoConfiguration
и ReactiveOAuth2ResourceServerAutoConfiguration
(если сервер ресурсов oauth2 включен) в кодах тестирования.
@SpringBootTest
@ImportAutoConfiguration(exclude = {ReactiveUserDetailsServiceAutoConfiguration.class, ReactiveSecurityAutoConfiguration.class})
class YourTest{
}
Или протестируйте веб-контроллер.
@WebFluxTest(controller=YourController.calss, excludeAutoConfigurations = {ReactiveUserDetailsServiceAutoConfiguration.class, ReactiveSecurityAutoConfiguration.class})
class YourTest{
}
Несколько лет назад я создал простой образец микросервиса, который использовал Spring Cloud Contract и Pact для реализации шаблона CDC при тестировании и проверке API, проверьте spring-microservice-sample.
В ваших кодах много проблем, вы смешали много тестовых фич. Пожалуйста, прочитайте часть тестирования, чтобы начать.
И, конечно же, я надеюсь, что вы прочитали официальный семинар Spring Cloud Contract, чтобы узнать, как использовать Spring Cloud Contract.
Согласитесь, намешано много тестовых фич. У меня возникли проблемы с разделением интеграционного теста и элементов функционального теста... Я не хотел создавать одни и те же POJO снова и снова. Если бы вы были на моем месте, как бы вы их разделили?? Есть ли у вас какие-либо советы??
ваш образец репо выглядит великолепно. Позвольте мне учиться учиться
Этот ответ решает автоконфигурацию, связанную с весенней безопасностью, но не решает мою проблему в весеннем облачном контракте с Kafka...
После того, как я добавил аннотации, ошибка все еще существует... Я протестировал как реактивные, так и нереактивные аннотации...