项目(一)springboot多模块工程(9)使用MockMvc做单元测试

14 篇文章 1 订阅
1 篇文章 0 订阅

直接上代码

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = HenApplication.class)
@WebAppConfiguration
public class SysUserServiceImplTest {
    private MockMvc mockMvc;
    @Autowired
    private SysUserController sysUserController;

    @Before
    public void before() throws Exception {
        mockMvc= MockMvcBuilders.standaloneSetup(sysUserController).build();
    }
    @After
    public void after() throws Exception {
    }
    @Test
    public void testUserController() throws Exception {
        // 测试
        RequestBuilder request;

        // 1、get查一下user列表,应该为空
        request = get("/sysUser/");
        mockMvc.perform(request)
                .andExpect(status().isOk());

        // 2、post提交一个user
        request = post("/sysUser/")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"id\":1,\"name\":\"admin\",\"age\":20}");
        mockMvc.perform(request)
                .andExpect(content().string(equalTo("success")));

        // 3、get获取user列表,应该有刚才插入的数据
        request = get("/sysUser/");
        mockMvc.perform(request)
                .andExpect(status().isOk());

        // 4、put修改id为1的user
        request = put("/sysUser/1")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"name\":\"administrator\",\"age\":30}");
        mockMvc.perform(request)
                .andExpect(content().string(equalTo("success")));

        // 5、get一个id为1的user
        request = get("/sysUser/1");
        mockMvc.perform(request);

        // 6、del删除id为1的user
        request = delete("/sysUser/1");
        mockMvc.perform(request)
                .andExpect(content().string(equalTo("success")));

        // 7、get查一下user列表,应该为空
        request = get("/sysUser/");
        mockMvc.perform(request)
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("[]")));

    }
}
@RestController
@RequestMapping("sysUser")
public class SysUserController extends BaseController<SysUser,SysUserService> {
    /**
     * 服务对象
     */
    @Resource
    private SysUserService sysUserService;

    /**
     * 处理"/users/"的GET请求,用来获取用户列表
     *
     * @return
     */
    @GetMapping("/")
    public List<SysUser> getUserList() {
        // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递
        return sysUserService.list();
    }

    /**
     * 处理"/users/"的POST请求,用来创建User
     *
     * @param user
     * @return
     */
    @PostMapping("/")
    public String postUser(@RequestBody SysUser user) {
        // @RequestBody注解用来绑定通过http请求中application/json类型上传的数据
        sysUserService.save(user);
        return "success";
    }

    /**
     * 处理"/users/{id}"的GET请求,用来获取url中id值的User信息
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public SysUser getUser(@PathVariable Long id) {
        // url中的id可通过@PathVariable绑定到函数的参数中
        return sysUserService.getById(id);
    }

    /**
     * 处理"/users/{id}"的PUT请求,用来更新User信息
     *
     * @param id
     * @param user
     * @return
     */
    @PutMapping("/{id}")
    public String putUser(@PathVariable Long id, @RequestBody SysUser user) {
        user.setId(id);
        sysUserService.updateById(user);
        return "success";
    }

    /**
     * 处理"/users/{id}"的DELETE请求,用来删除User
     *
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        sysUserService.removeById(id);
        return "success";
    }
}

要点

controller 需要通过注解注入。
注意static 包的导入。

代码地址

https://github.com/flashyunchen/hen.git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值