java在使用mockito matchers anyList()和any(List.class)时会产生不同的结果
我发现在使用mockito matchers anyList()和any(List.class)时会有不同的结果。然而,我无法反驳这一点,因为两者实际上应该返回相同的结果。也许有人能启发我
我使用matcher测试控制器。我的控制器将一个属性绑定到名为myList的模型。我想确认model属性实际上是一个列表
model.addAttribute("myList", Arrays.asList("test"));
任何(List.class)执行正确的测试:
mockMvc.perform(get("/")).andExpect(model().attribute("myList", any(List.class)));
但是anyList()返回预期的[],并导致测试失败:
mockMvc.perform(get("/")).andExpect(model().attribute("myList", anyList()));
我需要anyListOf(String.class)来验证列表是否包含字符串,但由于这种行为,我无法使用它
# 1 楼答案
您使用的是^{} ,它检查名为“myList”的模型属性是否等于第二个参数,即是否等于
any(List.class)
或anyList()
返回的值注意,这个方法根本不需要Mockito匹配器。它甚至与莫基托一点关系都没有。它只需要一个值,并检查model属性是否等于该值
anyList()
返回一个新的空数组列表any(List.class)
返回null。第一个测试成功是因为控制器碰巧在这个模型属性中存储了null,第二个测试失败是因为null不等于空的ArrayListTL;你不应该在这里使用Mockito匹配器。这毫无意义