java - Mockito,我在控制器中测试 Post 方法做错了什么?
问题描述
这是我的测试
@Test
@WithMockUser(authorities = "ADMIN")
void shouldCreateRestaurant_whenPost() throws Exception {
// when
mockMvc.perform(
post("/restaurant/admin/")
.contentType(MediaType.APPLICATION_JSON)
.content(this.objectMapper.writeValueAsString(RESTAURANT_CREATION_DOMINOS)));
// then
Mockito.verify(restaurantService, times(1)).create(RESTAURANT_CREATION_DOMINOS);
}
它失败了,因为它将对象与 = 进行比较。第一个对象 RestaurantCreationDTO@5980fa73,第二个对象 RestaurantCreationDTO@15a8cebd。但是如何确保使用有效参数调用 restaurantService 呢?
解决方案
你有两个选择:
首先- 如果足以检查服务调用中的对象是否确实是RestaurantCreationDTO
:
Mockito.verify(restaurantService, times(1)).create(any(RestaurantCreationDTO.class));
第二- 如果你真的想检查服务调用中的对象内容
在您的测试课程中
@Captor
ArgumentCaptor<RestaurantCreationDTO> restaurantCreationDtoCaptor;
在您的测试方法中
Mockito.verify(restaurantService, times(1)).create(restaurantCreationDtoCaptor.capture());
assertThat(restaurantCreationDtoCaptor.getValue()).isEqual(RESTAURANT_CREATION_DOMINOS)
推荐阅读
- python - 如果匹配条件,则插入行或更新行。有重复的术语,不是唯一的
- flutter - 如何使bottomBar背景透明并使延伸主体变为真实
- python - networkx - 遍历从节点 A 到节点 A 的所有路径,执行操作,找到最大值
- sql - SQL - 删除小数并将其值包含在数字中
- sql - 如何使 pg_search 更快?
- google-colaboratory - Colab 的 Huggingface AlBert 标记器 NoneType 错误
- amazon-web-services - AWS NLB 重定向
- firebase - Firestore 安全规则 - 允许基于其父文档数据读取子集合
- ruby-on-rails - 更新 Postgres 后,我的 Rails 服务器日志是黑白的(没有颜色编码的 SQL 操作)
- django - TypeError: context must be a dict 而不是 HttpResponseRedirect: 不使用 test_func() 真的不可能重定向到 url 吗?