[英]Test Get method using MockMvc and Mockito
我正在使用 MockMvc 和 Mokito 编写测试用例。
假设我有一个订单列表:
{
{
"order_id": 1,
"user_id": 1,
"price": 11.0,
"order_status": "Pending",
},
{
"order_id": 2,
"user_id": 2,
"price": 12.0,
"order_status": "Cancelled",
},
{
"order_id": 3,
"user_id": 1,
"price": 13.0,
"order_status": "Delivered",
},
}
列order_id是唯一的,因为我将其设置为主键。 但是一个用户可以有多个订单,因此 user_id 列可以出现多次。
当我在Postman中尝试端点/api/order/getOrders/user/{user_id}
时(例如,我设置 user_id = 1)。 响应与我的预期完全相同:
{
{
"order_id": 1,
"user_id": 1,
"price": 11.0,
"order_status": "Pending",
},
{
"order_id": 3,
"user_id": 1,
"price": 13.0,
"order_status": "Delivered",
},
}
但是,当我尝试使用 MockMvc 和 Mockito 编写单元测试用例时。 它总是返回所有的订单。 这是我的代码:
List<Order> orderList = new ArrayList<>();
Order order1 = new Order(1, 1, 11.0, "Pending");
Order order2 = new Order(2, 2, 12.0, "Cancelled");
Order order3 = new Order(3, 1, 13.0, "Shipped");
orderList.add(order1);
orderList.add(order2);
orderList.add(order3);
Mockito.when(orderService.getOrdersUserId(1)).thenReturn(orderList);
mockMvc.perform(MockMvcRequestBuilders.get("/api/order/getOrders/user/{user_id}", 1).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print())
.andExpect(jsonPath("$", hasSize(2)));
测试失败,因为响应包括所有 3 个项目。 我相信使用thenReturn(orderList)
是错误的,但我不知道要修复它。 有人可以让我知道我该如何解决吗?
您返回的订单列表中包含所有三个订单,因此它总是会返回所有订单。 如果您是 mocking 行为那么只需添加订单 1 和 3
List<Order> orderList = new ArrayList<>();
Order order1 = new Order(1, 1, 11.0, "Pending");
Order order2 = new Order(2, 2, 12.0, "Cancelled");
Order order3 = new Order(3, 1, 13.0, "Shipped");
orderList.add(order1);
orderList.add(order3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.