当有多个 any 参数时定义 mockito

Sha*_*jan 5 java unit-testing mockito

我正在尝试when使用多个any参数定义mockito 方法:

TestBedDaoClient testBedDaoClient = mock(TestBedDaoClient.class);
when(testBedDaoClient.addTestBed(anyString(), anyString(), any(VCloudConfiguration.class))).thenReturn(testBedPojoMockData);
Run Code Online (Sandbox Code Playgroud)

在目标测试类中:

TestBedPojo addedTestBedPojo = testBedDaoClient.addTestBed(testBedName, testBedDescription, vCloudConfiguration);
Run Code Online (Sandbox Code Playgroud)

在 DAO 客户端中:

public TestBedPojo addTestBed(String testBedName, String testBedDescription, VCloudConfiguration vCloudConfiguration){
     return testBedPojo;
}
Run Code Online (Sandbox Code Playgroud)

我想以when这样一种方式定义它返回testBedPojoMockData任何参数值。但我收到错误:Argument(s) are different!

我什至试过:

when(testBedDaoClient.addTestBed("test", "test", any(VCloudConfiguration.class))).thenReturn(testBedPojoMockData);
when(testBedDaoClient.addTestBed(any(), any(), any())).thenReturn(testBedPojoMockData);
Run Code Online (Sandbox Code Playgroud)

但没有运气。我如何定义它when以便它在任何调用中返回模拟数据?

Sha*_*jan 5

应该使用when和的正确组合verify。它在addTestBed方法中的任何其他参数组合上都失败了。

when(testBedDaoClient.addTestBed(anyString(), anyString(), any(VCloudConfiguration.class))).thenReturn(testBedPojoMockData);
//calling target method
verify(testBedDaoClient, times(1)).addTestBed(anyString(), anyString(), any(VCloudConfiguration.class));
Run Code Online (Sandbox Code Playgroud)