我有下一个控制器:
@Operation(summary = "Create a student meeting for agency ")
@ApiResponses({
@ApiResponse(responseCode = "200", content = {
@Content(schema = @Schema(implementation = MeetingResponse.class), mediaType = "application/json")
}),
@ApiResponse(responseCode = "400", content = {
@Content(schema = @Schema(implementation = ErrorResponse.class), mediaType = "application/json")
}),
@ApiResponse(responseCode = "401", content = {
@Content(schema = @Schema(implementation = ErrorResponse.class), mediaType = "application/json")
}),
})
@PostMapping(path = "/student/meeting")
public MeetingJoinToken setupMeeting(@RequestBody StudentMeetingRequest studentMeetingRequest){
SetupMeetingRequest setupMeetingRequest = validateAndCreateSetupMeetingRequest(studentMeetingRequest, ParticipantRole.ATTENDEE);
return studentService.setupMeeting(setupMeetingRequest);
}
我还有下一个测试:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThApplication.class)
@ComponentScan(basePackages = "com.agency")
@AutoConfigureMockMvc
public class ControllerIntTest {
private final String patientMeeting ="/student/meeting";
@Autowired
private MockMvc mockMvc;
@MockBean
IamTokenManagerRepository iamTokenManagerRepository;
@MockBean
ConfigmapFilesDownloader configmapFilesDownloader;
@BeforeClass
public static void setupClass() {
AthenaLogInitializer.getInstance().initialize();
}
@Test
public void th_joinSession_BadRequest() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/student/meeting"))
.andExpect(MockMvcResultMatchers.status().isBadRequest());
}
}
运行测试后我得到了
Expected :400
Actual :404
我想我在测试配置中遗漏了一些东西,有什么想法吗?
这些是我的依赖项:
testImplementation 'org.mockito:mockito-inline'
testImplementation 'org.mockito:mockito-core'
testImplementation 'org.junit.jupiter:junit-jupiter-engine'
testImplementation 'org.mockito:mockito-junit-jupiter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-test-autoconfigure'
testImplementation 'junit:junit'
testImplementation 'org.springframework:spring-test'
sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
}
}
}
configurations {
integrationTestImplementation.extendsFrom(testImplementation)
integrationTestRuntimeOnly.extendsFrom(testRuntimeOnly)
}
谢谢!
您的控制器未创建到上下文中。很可能是由于误用
@SpringBootTest(classes = ThApplication.class)
和
@ComponentScan
.
理想情况下,将单个@SpringBootApplication放入类路径中,删除
classes
和@ComponentScan
,然后它可能可以工作,具体取决于您对Springs约定优于配置的遵守情况:)