我正在尝试学习Mockito框架并实现一些模拟。当前,我想使用ArgumentMatcher
检查传递的对象是否匹配。我看到过去可以通过创建扩展ArgumentMatcher
的新类来实现。但是,现在可以使用Java 8 lambda函数。这就是我试图实现的方式:
private ArgumentMatcher<User> matchUser(User user) {
return u -> u != null && user.getId() == u.getId();
}
IntelliJ给我一个错误,因为它告诉
u
没有getId
方法。u
类型是否应该推断为User
? 最佳答案
您有Mockito版本1.x,其中ArgumentMatcher
是一个抽象类。从Mockito 2.x开始,他们将其更改为interface
,从而允许使用lambda。
ArgumentMatcher的源代码显示:
Branch release-2.x
on GitHub
Branch release-1.x
on GitHub
如果您将依赖项修复到较新的Mockito版本,则可以使用。