Используя Mockito, я хотел бы проверить вызов смоделированного метода (особенно передаваемые ему параметры) через лямбду, без необходимости использовать Captor
и т. Д.
MyThing
class MyThing {
public void run() {
// ... do stuff
doSomething(someInt, someString);
}
public void doSomething(MyOtherThing otherThing) {
// ... do more stuff
}
}
MyThingTests
@Test
public void ensure_doSomething_does_something() {
MyThing thing = mock(MyThing.class);
doCallRealMethod().when(thing).run();
thing.run();
thing.doSomething(any(), any()).verify(otherThing -> {
assertEquals(1, otherThing.getCount());
assertEquals("abc", otherThing.getName());
});
}
Приведенный выше тест перехватывает вызов doSomething
и проверяет переданный параметр. Обратите внимание, что это должно работать для методов, которые возвращают void
.
Возможно, я мог бы использовать doAnswer
, но это похоже на взлом, а не на то, для чего он предназначен.