我正在使用 Mockito 进行服务后期单元测试。我很困惑何时使用doAnswer
vs thenReturn
.
谁能帮我详细一点吗?到目前为止,我已经尝试过thenReturn
.
你应该使用thenReturn
or doReturn
当您在模拟方法调用时知道返回值时。当您调用模拟方法时,将返回此定义的值。
thenReturn(T value)
设置调用方法时要返回的返回值。
@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
当您需要在调用模拟方法时执行其他操作时使用,例如当您需要根据此方法调用的参数计算返回值时。
Use doAnswer()
当你想用泛型存根一个 void 方法时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");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)