mockito 部分参数模拟
mockito partial parmaters mocking
我正在尝试在 java 中编写单元测试。下面是我的代码片段
class 温度 {
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),然后指定方法的适当 return 值。
有办法解决这个问题吗?
谢谢
您需要对最后一个参数使用 Matchers.eq(false)
(或 Mockito.eq(false)
,相同的静态方法在两个地方公开)而不是普通的 false
。
也就是说,考虑将存根(when()
调用)中的所有匹配器保留为 any()
而不是期望值。这里有两种情况:要么你的测试实际上关心什么值被传递到模拟中,在这种情况下你需要一个 verify()
调用(因为错过模拟期望不是 Mockito 中的错误),或者你的测试不在乎,在这种情况下,期望特定值只会使您的测试变得脆弱。无论哪种方式,除非您需要根据不同的参数值 return 来自存根的不同值,否则在存根时期望特定参数没有任何价值。
我正在尝试在 java 中编写单元测试。下面是我的代码片段
class 温度 { 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),然后指定方法的适当 return 值。
有办法解决这个问题吗?
谢谢
您需要对最后一个参数使用 Matchers.eq(false)
(或 Mockito.eq(false)
,相同的静态方法在两个地方公开)而不是普通的 false
。
也就是说,考虑将存根(when()
调用)中的所有匹配器保留为 any()
而不是期望值。这里有两种情况:要么你的测试实际上关心什么值被传递到模拟中,在这种情况下你需要一个 verify()
调用(因为错过模拟期望不是 Mockito 中的错误),或者你的测试不在乎,在这种情况下,期望特定值只会使您的测试变得脆弱。无论哪种方式,除非您需要根据不同的参数值 return 来自存根的不同值,否则在存根时期望特定参数没有任何价值。