我正在尝试学习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版本,则可以使用。

09-05 12:16