【Springboot @Test 给Controller接口 写 单元测试】

Springboot @Test 给Controller接口 写 单元测试

假设我们要测试以下Controller:

@RestController
@RequestMapping("/api/v1")
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/users/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.getUserById(id);
        if (user == null) {
            return ResponseEntity.notFound().build();
        } else {
            return ResponseEntity.ok(user);
        }
    }

}

我们可以使用SpringBootTest和MockMvc来编写单元测试:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTests {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserService userService;

    @Test
    public void testGetUserById() throws Exception {
        Long userId = 1L;
        User user = new User();
        user.setId(userId);
        user.setName("Alice");

        given(userService.getUserById(userId)).willReturn(user);

        mockMvc.perform(get("/api/v1/users/{id}", userId))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.id", is(userId.intValue())))
                .andExpect(jsonPath("$.name", is(user.getName())));
    }
}

在这个测试中,我们使用了MockBean来模拟UserService服务,使用given和willReturn方法来指定UserService在调用getUserById方法时返回我们指定的User。然后使用mockMvc.perform模拟一个GET请求,并使用andExpect来验证响应的状态码和响应体的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单元测试是一种验证程序执行逻辑是否正确的方法,它可以帮助我们确保代码在各种情况下都能正常工作。对于Spring Boot的Controller层,我们可以使用单元测试来验证其功能是否正确。首先,我们需要添加测试依赖。 在编单元测试之前,我们可以先创建一个单元测试基础类。这个基础类可以包含一些通用的配置和操作,比如日志记录和测试生命周期的管理。 在具体的Controller类中,我们可以使用@RestController注解来定义一个Controller类,并使用@RequestMapping注解来定义接口路径。在这个例子中,我们可以看到一个HelloWorldController类,它包含了一个名为"/hello"的接口,这个接口可以接受一个名为"name"的参数,并返回一个字符串。 在进行单元测试时,我们可以使用Spring Boot提供的一些工具和注解来模拟请求和验证结果。例如,我们可以使用@RunWith注解来指定测试运行器,使用@SpringBootTest注解来指定使用Spring Boot的上下文环境进行测试,使用@WebAppConfiguration注解来指定使用Web应用程序的配置。 总的来说,使用Spring Boot进行Controller层的单元测试接口测试类似,只是在单元测试中我们可以更加专注于验证Controller的具体逻辑和功能。通过编合适的测试用例,我们可以确保Controller的行为符合我们的预期,并帮助我们发现和解决潜在的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值