Mockito:“thenReturn()”和“thenAnswer()”有什么区别?

问题描述 投票:0回答:2

我可以调用方法并应用逻辑,

示例

thenAnswer(val -> {
            //logic
            return newValue;
        });


thenReturn(callMethod1(obj));

obj callMethod1(obj){

//Logic
return obj;
}```
java mocking mockito
2个回答
4
投票

thenReturn()
需要一个对象来返回,而
thenAnswer()
需要实现接口的类的对象。
因此,如果您需要返回固定值,正确使用的方法是
thenReturn()
,但是如果您需要对返回的对象进行某种操作,那么您应该使用
thenAnswer()
,它将调用一个 Answer 实例。
在简历中,这只是一个实施问题,选择一个或另一个取决于你的目的。


1
投票

thenReturn
,顾名思义,只是在模拟条件发生时返回一些值。

thenAnswer
调用 answer
 实例的 
Answer
 方法,并允许您在条件发生时执行一些任意代码。

© www.soinside.com 2019 - 2024. All rights reserved.