Spring MVC 404页面未找到

t1rydlwq  于 2022-11-14  发布在  Spring
关注(0)|答案(2)|浏览(183)

我 尝试 用@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]]

格式

pgx2nnw8

pgx2nnw81#

我也遇到了同样的错误,经过几个小时的搜索发现错误是由于控制器没有注册。问题描述为here
很显然,下面这些是不够的。

@WebMvcTest(controllers = {<ControllerToTest>.class})

你需要做的,

@WebMvcTest(controllers = {<ControllerToTest>.class})
@Import(<ControllerToTest>.class)
gudnpqoy

gudnpqoy2#

我可以尝试更改注解
@WebMvcTest(RegistroClienteController.class)

@SpringBootTest(classes = {your application class}.class)

相关问题