Я хочу написать логику интеграции и конечные точки и не хочу имитировать какой-либо класс, но программа не попадает на уровень обслуживания и выдает ошибку:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'service.index.service.IndexService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
если я имитирую класс обслуживания Bean, он выдает код состояния 200. в то время как мне также нужно протестировать уровень обслуживания, а не издеваться над ним. если он войдет в эксплуатацию и выполнит всю логическую часть, он должен выдать код состояния 201.
Как я могу сделать так, чтобы он проверял всю часть, начиная с контроллера и уровня обслуживания?
Это тест:
@WebMvcTest(controllers = Controller.class)
class ControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper mapper;
@Autowired
private IndexService indexService;
private String baseUrl = "https://localhost/";
@Test
void createIndex() throws Exception {
CreationInputDto input = new CreationInputDto();
MvcResult result = mockMvc.perform(
post(baseUrl+"/create")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(input))
)
.andExpect(status().is(201))
.andReturn();
String content = result.getResponse().getContentAsString();
}}
Мой IndexService имеет несколько автоматически подключаемых параметров, некоторые из которых являются интерфейсами и не могут быть легко инициированы.
Обновление: спасибо всем. Вместо этого я попробовал SpringBootTest и WebTestClient, и все получилось. Я разместил код на случай, если в будущем у кого-то возникнет такая же проблема и он захочет использовать WebTestClient:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ControllerTest {
@Autowired
private WebTestClient webTestClient;
@Test
void createIndex() {
CreationInputDto input = new CreationInputDto();
WebTestClient.ResponseSpec result = webTestClient
.post()
.uri("/create")
.body(Mono.just(input), CreationInputDto.class)
.exchange()
.expectStatus().isEqualTo(201);
}}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -as-autowi
Интеграционный тест Java Spring: ожидается как минимум 1 компонент, который квалифицируется как кандидат на автоматическ ⇐ JAVA
Программисты JAVA общаются здесь
1729696951
Anonymous
Я хочу написать логику интеграции и конечные точки и не хочу имитировать какой-либо класс, но программа не попадает на уровень обслуживания и выдает ошибку:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'service.index.service.IndexService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
если я имитирую класс обслуживания Bean, он выдает код состояния 200. в то время как мне также нужно протестировать уровень обслуживания, а не издеваться над ним. если он войдет в эксплуатацию и выполнит всю логическую часть, он должен выдать код состояния 201.
Как я могу сделать так, чтобы он проверял всю часть, начиная с контроллера и уровня обслуживания?
Это тест:
@WebMvcTest(controllers = Controller.class)
class ControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper mapper;
@Autowired
private IndexService indexService;
private String baseUrl = "https://localhost/";
@Test
void createIndex() throws Exception {
CreationInputDto input = new CreationInputDto();
MvcResult result = mockMvc.perform(
post(baseUrl+"/create")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(input))
)
.andExpect(status().is(201))
.andReturn();
String content = result.getResponse().getContentAsString();
}}
Мой IndexService имеет несколько автоматически подключаемых параметров, некоторые из которых являются интерфейсами и не могут быть легко инициированы.
Обновление: спасибо всем. Вместо этого я попробовал SpringBootTest и WebTestClient, и все получилось. Я разместил код на случай, если в будущем у кого-то возникнет такая же проблема и он захочет использовать WebTestClient:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ControllerTest {
@Autowired
private WebTestClient webTestClient;
@Test
void createIndex() {
CreationInputDto input = new CreationInputDto();
WebTestClient.ResponseSpec result = webTestClient
.post()
.uri("/create")
.body(Mono.just(input), CreationInputDto.class)
.exchange()
.expectStatus().isEqualTo(201);
}}
Подробнее здесь: [url]https://stackoverflow.com/questions/79117873/integration-test-java-spring-expected-at-least-1-bean-which-qualifies-as-autowi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия