我正在使用 Mockito 进行后续单元测试。我很困惑何时使用 doAnswerthenReturn

谁能帮我详细点?到目前为止,我已经尝试过 thenReturn

最佳答案

当您在模拟方法调用时知道返回值时,您应该使用 thenReturndoReturn。当您调用模拟方法时,将返回此定义的值。



@Test
public void test_return() throws Exception {
    Dummy dummy = mock(Dummy.class);
    int returnValue = 5;

    // choose your preferred way
    when(dummy.stringLength("dummy")).thenReturn(returnValue);
    doReturn(returnValue).when(dummy).stringLength("dummy");
}
Answer 用于在调用模拟方法时需要执行其他操作,例如当您需要根据此方法调用的参数计算返回值时。



@Test
public void test_answer() throws Exception {
    Dummy dummy = mock(Dummy.class);
    Answer<Integer> answer = new Answer<Integer>() {
        public Integer answer(InvocationOnMock invocation) throws Throwable {
            String string = invocation.getArgumentAt(0, String.class);
            return string.length() * 2;
        }
    };

    // choose your preferred way
    when(dummy.stringLength("dummy")).thenAnswer(answer);
    doAnswer(answer).when(dummy).stringLength("dummy");
}

关于java - Mockito : doAnswer Vs thenReturn,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36615330/

10-15 13:23