比如,`thenThrow`方法用于指定当某个条件满足时,抛出一个异常;`thenAnswer`方法用于指定当某个条件满足时,执行一个自定义的操作。这些方法可以根据测试的需要灵活运用,确保测试的准确性。 `then`方法用于验证模拟对象的方法调用,确保模拟的对象的行为符合预期。比如,我们可以使用`then`方法来验证模拟对象的某个方法是否...
答案是可选的依赖注入。
public String answer(InvocationOnMock invocationOnMock) throws Throwable { final List mock = (List) invocationOnMock.getMock(); return "mock.size result => " + mock.size(); } }; when(mockList.get(1)).thenAnswer(answer); doAnswer(answer).when(mockList).get(1); System.out.println(mock...
o thenCallRealMethod()o thenAnswer() -这可以用于设置更智能的存根,也可以模拟void方法的行为(请参见如何模拟void方法的行为)。· 只需将所有这些再次放在一行中: when(dao.save(customer)).thenReturn(true);· 我们是否真的需要将实际的客户对象传递给此处的save方法?不,我们可以使用如下匹配器:when(dao...
2.3 使用when then Answer可以采用反射返回不同的值进行测试 /** * 使用when then Answer可以采用反射返回不同的值进行测试 */@TestpublicvoidotherTest(){Mockito.when(newsCheckEngine.execute(Mockito.isA(NewsBaseServiceCtx.class))).thenAnswer(newAnswer<BaseServiceResult>(){@OverridepublicBaseServiceResultan...
o thenCallRealMethod() o thenAnswer() -这可以用于设置更智能的存根,也可以模拟void方法的行为(请参见如何模拟void方法的行为)。 · 只需将所有这些再次放在一行中: when(dao.save(customer)).thenReturn(true); · 我们是否真的需要将实际的客户对象传递给此处的save方法?不,我们可以使用如下匹配器:when(dao...
mockMap.put("key2","value2");when(mockMap.get(anyString())).thenAnswer(newAnswer() {publicObjectanswer(InvocationOnMock invocation){ Object[] args = invocation.getArguments(); Object mock = invocation.getMock();return"called with arguments: "+ Arrays.toString(args);// 可以自定义返回值} ...
when().thenReturn()、when().thenThrow()、when().thenAnswer() 都是类似的效果, 即:当when()声明的行为发生后,执行自定义的then操作 4. Mockito.doXXX().when().xxx() 的使用(作用:模拟方法调用) 其使用思路与Mockito.when().thenXX()一致
when(list.get(0)).thenAnswer(new Answer<String>() { @Override public String answer(InvocationOnMock invocation) throws Throwable { Object[] arguments = invocation.getArguments(); Method method = invocation.getMethod(); //invocation.callRealMethod(); ...
when(calculatorMock.add(5, 10)).thenReturn(new CustomObject()); //返回结果为自定义对象 when(calculatorMock.add(5, 10)).thenThrow(new RuntimeException()); //抛出异常 ``` 以上就是基本的`when-then`用法。Mockito还有其他用于模拟方法调用的方法,例如`thenReturn()`,`thenAnswer()`等,可以根据具体...