Проверить вызов ложного метода с помощью лямбды? - PullRequest
1 голос
/ 19 апреля 2019

Используя 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, но это похоже на взлом, а не на то, для чего он предназначен.

...