Java 用lambda验证模拟方法调用?
使用Mockito,我想通过lambda验证mocked方法调用(特别是传递给它的参数),而不必使用Java 用lambda验证模拟方法调用?,java,unit-testing,mocking,mockito,Java,Unit Testing,Mocking,Mockito,使用Mockito,我想通过lambda验证mocked方法调用(特别是传递给它的参数),而不必使用Captor等 虚构 类神话{ 公开募捐{ //…做事 doSomething(someInt,someString); } 公开无效的内容(我的其他内容){ //…做更多的事情 } } 神话测试 @测试 公共无效确保做某事做某事{ MyThing thing=mock(MyThing.class); doCallRealMethod().when(thing.run(); 运行(); doSo
Captor
等
虚构
类神话{
公开募捐{
//…做事
doSomething(someInt,someString);
}
公开无效的内容(我的其他内容){
//…做更多的事情
}
}
神话测试
@测试
公共无效确保做某事做某事{
MyThing thing=mock(MyThing.class);
doCallRealMethod().when(thing.run();
运行();
doSomething(any(),any())。验证(otherThing->{
assertEquals(1,otherThing.getCount());
assertEquals(“abc”,otherThing.getName());
});
}
上述测试正在拦截对doSomething
的调用,并验证传入的参数。请注意,这需要适用于具有void
返回的方法
我可能会使用
doAnswer
,但这似乎是一种黑客行为,而不是它的本意。不需要任何lambda:验证(东西)。doSomething(1,“abc”)
。抱歉,将更新问题,但参数不是值类型,而是某些类的实例。我需要验证传递的参数的属性。然后使用匹配器:.argThat
工作。贴出答案,我会接受。不需要任何lambda:验证(东西)。doSomething(1,“abc”)
。抱歉,将更新问题,但参数不是值类型,而是某些类的实例。我需要验证传递的参数的属性。然后使用匹配器:.argThat
工作。贴出答案,我会接受的。