集成测试java spring:预计至少有1个符合自动装配候选资格的bean

问题描述 投票:0回答:1

我想编写集成逻辑和端点,但程序没有进入服务层,并给出错误:

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 {

    IndexshareDto indexshareDto1 = new IndexshareDto("A.OQ", 10.0, 20.0);
    IndexDto indexDto = new IndexDto("INDEX_1", asList(indexshareDto1));
    CreationInputDto input = new CreationInputDto(indexDto);

    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();
}}
java spring controller integration-testing
1个回答
0
投票

我认为你的问题类似于向“@WebMvcTest”添加一个额外的bean

有多种方法可以将 bean 添加到切片测试上下文中。您可以使用@Import、@ComponentScan、@TestConfiguration(并使用 new 运算符自行创建 bean)。

© www.soinside.com 2019 - 2024. All rights reserved.