我想对包含控制器的上下文进行Spring测试。 该控制器在测试之外不可见,仅用于测试目的。 因此,当我通过 mockMvc 执行请求时,此请求将到达控制器。
我应该如何定义控制器?我不想将其放在测试包之外,因为我在那里不需要它。
答案 0 :(得分:0)
您可以通过测试配置文件标记控制器,并且该bean不会在生产模式下实例化:
@Profile("test")
@RestController
@RequestMapping("/apiUrl")
public class TestController {
...
}
此外,如果您使用Spring Boot,则可以在测试中立即使用TestConfiguration
:
@SpringBootTest
@ExtendsWith(SpringExtension.class)
public class ApiTest {
@Test
void testApi() {
// send request to test API
}
@TestConfiguration
public static class TestConfig {
@RestController
@RequestMapping("/apiUrl")
public class TestController {
@GetMapping("/test")
public String test() {
return "STUB";
}
}
}
}