如何在JUnit测试的GET请求中包含路径变量?

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

我试图测试下面的方法,但得到的是一个错误信息

ParameterResolutionException.没有为参数注册ParameterResolver。没有为参数注册ParameterResolver。

我的 controller 是以下几点。

@GetMapping("/get/{id}")
    public User getUserById(@PathVariable int id) {
        return userService.getUserById(id);
    }

而我的测试是这样的

    @Test
    void getUserById(Integer id) throws Exception {
        User user1 = new User(1, "FirstName", "LastName", "Address", 
        "1234566", "[email protected]");
        when(userService.getUserById(1)).thenReturn(user1);
        mockMvc.perform(MockMvcRequestBuilders.get("/get/{id}", "1"))
            .andExpect(status().isOk());
             assertEquals(userController.getUserById(1), user1);
    }

我如何解决这个异常,使测试通过?

junit spring-boot-test mockmvc
1个回答
0
投票

像这样写你的mockMVC。

val response = mockMvc.perform(MockMvcRequestBuilders.get("/get/1"))
                .andExpect(status().isOk())

然后用响应断言,比如...

response.andExpect(jsonPath("$.your.object.path", is("your_expected_output")));
© www.soinside.com 2019 - 2024. All rights reserved.