gpt4 book ai didi

java - Mockito - 是否有 "value not in List"的匹配器?

转载 作者:行者123 更新时间:2023-11-29 10:08:59 25 4
gpt4 key购买 nike

我目前有一个模拟,它具有针对特定输入集的特定行为。每一个其他输入都应该返回一个特定的响应。

例如:

    Mockito.when(classInstance.myFunc(Mockito.eq("Option1"))).thenReturn(answer1);
Mockito.when(classInstance.myFunc(Mockito.eq("Option2"))).thenReturn(answer2);
Mockito.when(classInstance.myFunc(Mockito.eq("Option3"))).thenReturn(answer3);
Mockito.when(classInstance.myFunc(Mockito.eq("Option4"))).thenReturn(answer4);

// Return defaultAnswer if and(and(not("Option1"), not("Option2")), and(not("Option3"), not("Option4")))
Mockito.when(classInstance.myFunc(AdditionalMatchers.and(AdditionalMatchers.and(AdditionalMatchers.not(Mockito.eq("Option1")), AdditionalMatchers.not(Mockito.eq("Option2")), AdditionalMatchers.and(AdditionalMatchers.not(Mockito.eq("Option3")), AdditionalMatchers.not(Mockito.eq("Option4")))).thenReturn(defaultAnswer);

我最大的麻烦是 and(and(not("Option1"), not("Option2")), and(not("Option3"), not("Option4"))) 的复杂性 行。

我真的希望有一种更简单的方法来指定“其他所有”条件或只是“不在列表中:["option1", ...]”

是否有“组内”或类似的匹配器?

最佳答案

您可以通过显式定义默认值,然后使用后续 stub “覆盖”它来使其更具可读性:

when(classInstance.myFunc(any()).thenReturn(defaultAnswer);
when(classInstance.myFunc("Option1").thenReturn(answer1);
when(classInstance.myFunc("Option2").thenReturn(answer2);
...

或者您可以使用 MockitoHamcrest 和 Hamcrest 的核心匹配器来稍微简化它,例如:

when(classInstance.myFunc(argThat(is(allOf(not("Option1"), not("Option2"), ...))))
.thenReturn(...)

或者您可以使用 MockitoHamcrest 和您自己的 Hamcrest 匹配器。

关于java - Mockito - 是否有 "value not in List"的匹配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843971/

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