Интеграционный тест Java Spring: ожидается как минимум 1 компонент, который квалифицируется как кандидат на автоматическJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Интеграционный тест Java Spring: ожидается как минимум 1 компонент, который квалифицируется как кандидат на автоматическ

Сообщение 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);
}}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -as-autowi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»