[英]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.