Mockito.doAnswer重写setage方法
时间: 2024-12-14 20:16:25 浏览: 9
`Mockito.doAnswer`是一个用于Mockito框架的方法,它允许你在运行时改变对象方法的响应行为。当`doAnswer`与`spy`一起使用时,它可以让你重写`User`类中的`setAge`方法,使得方法的调用不再直接执行其原始逻辑,而是执行你提供的自定义处理。
下面是如何使用`doAnswer`重写`setAge`方法的例子:
```java
import static org.mockito.Mockito.*;
// 假设User类有setAge方法
User user = spy(new User()); // 对User对象进行模拟
// 定义新的行为,这里我们只是简单地打印参数
Answer<Void> answer = invocation -> {
int age = (int) invocation.getArgumentAt(0, Integer.class); // 获取方法参数
System.out.println("Received age: " + age);
return null; // 返回null表示方法不需要返回值
};
// 用新的行为替换setAge方法
when(user.setAge(anyInt())).thenAnswer(answer);
// 现在调用setAge方法会执行你定义的代码而不是原始逻辑
user.setAge(25); // 输出 "Received age: 25"
```
在这段代码中,`anyInt()`是一个匹配器,匹配任何整数类型的参数。这意味着无论何时`setAge`方法被调用,都会触发我们的`answer`方法。
阅读全文