参数无法识别的Mockito ArgumentMatcher lambda函数

时间:2018-07-26 21:27:27

标签: java lambda mockito

我正在尝试学习 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

1 个答案:

答案 0 :(得分:1)

您有Mockito版本1.x,其中ArgumentMatcher是抽象类。从Mockito 2.x开始,他们将其更改为interface,允许使用lambda。

ArgumentMatcher的源代码显示:

如果您将依赖项修复到较新版本的Mockito,它将可以使用。