gpt4 book ai didi

java - mockito 部分参数模拟

转载 作者:行者123 更新时间:2023-11-30 07:59:38 26 4
gpt4 key购买 nike

我正在尝试用 Java 编写单元测试。下面是我的代码片段

类温度{ 公共(public)无效方法(){

       return someObject.someMethod(param1, param2, param3, param4, param5);
}
}

测试方法:

@Test
public void testMethod() {

Mokito.when(someObjectMock.someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyInt(), Mockito.anyBoolean(),
false)). thenReturn(true);

boolean status = temp.method();

Assert.assertEquals(true, status);
}

在执行测试用例时,出现以下错误:

 Invalid Use of argument matchers !
5 matchers expected, 4 recorded

如果我的理解是正确的,它希望所有传递的参数都被模拟。然而那不是我想要的,我希望模拟前 4 个参数,并根据第 5 个参数(true 或 false),然后指定方法的适当返回值。

有办法解决这个问题吗?

谢谢

最佳答案

您需要使用 Matchers.eq(false) (或 Mockito.eq(false) ,两个地方都公开了相同的静态方法)而不是普通的 false对于最后一个参数。

也就是说,考虑将 stub (when() 调用)中的所有匹配器保留为any()而不是期望一个值。这里有两种情况:要么你的测试实际上关心传递给模拟的值是什么,在这种情况下你需要一个 verify()。调用(因为错过模拟期望在 Mockito 中不是错误),否则您的测试不关心,在这种情况下期望特定值只会使您的测试变得脆弱。无论哪种方式,除非您需要根据不同的参数值从 stub 返回不同的值,否则在 stub 时期望特定参数没有任何值(value)。

关于java - mockito 部分参数模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195264/

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