说我在嘲笑这个班级 Foo
class Foo {
public void doThing(Bar bar) {
// ...
}
}
这是 Bar
class Bar {
private int i;
public int getI() { return i; }
public void setI(int i) { this.i = i; }
}
I know I can use Mockito’s verify functionality to see if Foo#doThing(Bar)
was called on the mock with a specific instance of Bar
or any Bar
with Mockito.any(Bar.class)
, 但有什么方法可以确保它被任何 Bar
调用,但具有特定值 i
或 Bar#getI()
?1b—
我所知道的是可能的:
Foo mockedFoo = mock(Foo.class);
Bar someBar = mock(Bar.class);
...
verify(mockedFoo).doThing(someBar);
verify(mockedFoo).doThing(any(Bar.class);
我想知道的是,是否有一种方法可以验证 Bar
是否作为参数传递了关于它的特定内容。
原文由 Captain Man 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Mockito 2.1.0 及更高版本的 Java 8 中,您可以开箱即用地将 lambda 传递给 argThat, 这样就不需要自定义参数匹配器了。对于 OP 中的示例,将是:
这是因为从 Mockito 2.1.0 开始,
ArgumentMatcher
是一个功能接口。