Spring 测试预期 400 bat 是 404 未找到端点

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

我有下一个控制器:

    @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)
}

谢谢!

java integration-testing spring-test
1个回答
0
投票

您的控制器未创建到上下文中。很可能是由于误用

@SpringBootTest(classes = ThApplication.class)

@ComponentScan
.

理想情况下,将单个@SpringBootApplication放入类路径中,删除

classes
@ComponentScan
,然后它可能可以工作,具体取决于您对Springs约定优于配置的遵守情况:)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.