我想编写集成逻辑和端点,但程序没有进入服务层,并给出错误:
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();
}}
我认为你的问题类似于向“@WebMvcTest”添加一个额外的bean。
有多种方法可以将 bean 添加到切片测试上下文中。您可以使用@Import、@ComponentScan、@TestConfiguration(并使用 new 运算符自行创建 bean)。