我需要帮助使用 Mockito 的正确语法来测试 Spring Rest 模板删除方法。服务代码:@Override public Boolean deleteCustomerItem(String customerNumber, String customerItemId) throws Exception { Map<String, String> uriVariables = new HashMap<>(); uriVariables.put("itemId", customerItemId); try { ResponseEntity<Void> deleteResponseEntity = restTemplate.exchange( deleteCustomerItemUrl, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class, uriVariables); return deleteResponseEntity.getStatusCode().is2xxSuccessful(); } catch (Exception e) { throw new AppCustomerException(e.getMessage()); } }单元测试代码:@Test public void testDeleteCustomerItem() throws AppCustomerException { ResponseEntity<Void> noResponse = new ResponseEntity<Void>(HttpStatus.OK); when(restTemplate.exchange(anyString(), any(HttpMethod.class), any(HttpEntity.class), Void.class, anyMap())) .thenReturn(noResponse); Boolean deleteStatus = appCustomerService.deleteCustomerItem("134", "7896"); assertEquals(Boolean.TRUE, deleteStatus); }例外:Mockito Matchers 的使用无效。5 匹配预期 4 记录。
2 回答
开满天机
TA贡献1786条经验 获得超13个赞
您应该将其包装Void.class
在 Mockito 匹配器中:
when(restTemplate.exchange( anyString(), any(HttpMethod.class), any(HttpEntity.class), eq(Void.class), anyMap())) .thenReturn(noResponse);
它的工作方式是所有输入都被ArgumentMatcher
包装或没有。
慕田峪7331174
TA贡献1828条经验 获得超13个赞
when(restTemplate.exchange( anyString(), any(HttpMethod.class), any(HttpEntity.class), any(Void.class), anyMap())) .thenReturn(noResponse);
您不应该在 when().thenReturn() 语句中将 anyMap() 和 anyString() 等蚂蚁匹配器与精确值(例如 eq(Void.class))结合起来
你也可以用 any() 替换“Void.class”
添加回答
举报
0/150
提交
取消