【发布时间】:2015-06-29 15:32:04
【问题描述】:
我有两个班级:
ClassA {
public String methodA(String accountId, Predicate<User> predicate) {
// more code
};
}
ClassB {
methodB(){
ClassA objectA = new ClassA();
objectA.methodA("some id", PredicatesProvider.isUserValid());
// more code ...
}
}
class PredicatesProvider {
static Predicate<User> isUserValid(){
return (user) -> {
return user.isValid();
}
}
在我的单元测试中,我需要模拟 ClassA,所以我使用 Mockito 的模拟方法如下:
ClassA mockObjectA = Mockito.mock(ClassA.class);
Mockito.when(mockObjectA).methodA("some id", PredicatesProvider.isUserValid()).thenReturn("something");
Mockito 找不到签名匹配。
The java.lang.AssertionError: expected:<PredicatesProvider$$Lambda$5/18242360@815b41f> but was:<PredicatesProvider$$Lambda$5/18242360@5542c4ed>
这是我想要实现的目标的简化版本。我猜这是谓词的 equals() 函数的问题。知道如何模拟具有谓词参数的方法吗?
谢谢
【问题讨论】: