gpt4 book ai didi

java - 使用mockito匹配器anyList()和any(List.class)时的不同结果

转载 作者:行者123 更新时间:2023-12-01 21:11:29 25 4
gpt4 key购买 nike

我发现使用mockito匹配器anyList()和any(List.class)有不同的结果。然而,我无法理解这一点,因为两者实际上应该返回相同的结果。也许有人可以启发我。

我使用匹配器来测试 Controller 。我的 Controller 将一个属性绑定(bind)到名为 myList 的模型。我想验证模型属性实际上是一个列表。

model.addAttribute("myList", Arrays.asList("test"));

any(List.class) 执行正确的测试:

mockMvc.perform(get("/")).andExpect(model().attribute("myList", any(List.class)));

但是 anyList() 返回预期的 [] 并导致测试失败:

mockMvc.perform(get("/")).andExpect(model().attribute("myList", anyList()));

我需要 anyListOf(String.class) 来验证列表是否包含字符串,但由于这种行为,我无法使用它。

最佳答案

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

请注意,此方法根本不需要 Mockito 匹配器。它甚至与 Mockito 根本没有关系。它只需要一个值,并检查模型属性是否等于该值。

anyList() 返回一个新的空 ArrayList。 any(List.class) 返回 null。因此,您的第一个测试会成功,因为您的 Controller 恰好在此模型属性中存储 null,而您的第二个测试会失败,因为 null 不等于空 ArrayList。

TL;DR:您不应该在这里使用 Mockito 匹配器。这是没有意义的。

关于java - 使用mockito匹配器anyList()和any(List.class)时的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41070411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com