我正在使用 Mockito 进行后续单元测试。我很困惑何时使用 doAnswer
与 thenReturn
。
谁能帮我详细点?到目前为止,我已经尝试过 thenReturn
。
最佳答案
当您在模拟方法调用时知道返回值时,您应该使用 thenReturn
或 doReturn
。当您调用模拟方法时,将返回此定义的值。
@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/