2

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

4

1 回答 1

3

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

ArgumentMatcher 的源代码显示:

如果您将依赖项修复为更新版本的 Mockito,它将起作用。

于 2018-07-26T23:06:35.670 回答