我 尝试 用@WebMvcTest 测试 一 个 非常 简单 的 GET 请求 的 控制 器 , 但是 我 得到 的 是 404 而 不是 200 , 控制 台 没有 给 我 任何 有用 的 信息 来 理解 正在 发生 的 事情 。
我 在 控制 器 的 开头 放 了 一 个 断点 , 但是 它 从来 没有 到达 。 如果 我 运行 应用 程序 , 端点 会 按 预期 工作 。
下面 是 我 的 控制 器 :
@RestController
public class RegistroClienteController {
@GetMapping("/api/registro-cliente")
public ResponseEntity<Void> crearCliente() {
return new ResponseEntity<Void>(HttpStatus.OK);
}
}
中 的 每 一 个
这 是 我 的 测试 :
@RunWith(SpringRunner.class)
@WebMvcTest(RegistroClienteController.class)
@ContextConfiguration(classes = { SecurityConfig.class })
public class RegistroClienteControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
UserDetailsService userDetailsService;
@Test
public void test() throws Exception {
//@formatter:off
mockMvc
.perform(get("/api/registro-cliente"))
.andExpect(status().isOk());
//@formatter:on
}
}
格式
和 控制 台 的 输出 :
MockHttpServletRequest:
HTTP Method = GET
Request URI = /api/registro-cliente
Parameters = {}
Headers = {}
Handler:
Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandler
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 404
Error message = null
Headers = {X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY]}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = [[Cookie@624b3544 name = 'XSRF-TOKEN', value = 'f9d63654-4e21-4d41-b3bb-6767703268b5', comment = [null], domain = [null], maxAge = -1, path = '/', secure = false, version = 0, httpOnly = false]]
格式
2条答案
按热度按时间pgx2nnw81#
我也遇到了同样的错误,经过几个小时的搜索发现错误是由于控制器没有注册。问题描述为here。
很显然,下面这些是不够的。
你需要做的,
gudnpqoy2#
我可以尝试更改注解
@WebMvcTest(RegistroClienteController.class)
至
@SpringBootTest(classes = {your application class}.class)