有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您使用的是^{},它检查名为“myList”的模型属性是否等于第二个参数,即是否等于any(List.class)anyList()返回的值

    注意,这个方法根本不需要Mockito匹配器。它甚至与莫基托一点关系都没有。它只需要一个值,并检查model属性是否等于该值

    anyList()返回一个新的空数组列表any(List.class)返回null。第一个测试成功是因为控制器碰巧在这个模型属性中存储了null,第二个测试失败是因为null不等于空的ArrayList

    TL;你不应该在这里使用Mockito匹配器。这毫无意义