Mockito доступ к результату метода - PullRequest
0 голосов
/ 06 марта 2019

Можно ли передать результат метода как возвращаемое значение другого смоделированного?

У меня есть что-то похожее на:

Order savedOrder = orderDataService.save(order);
try{
    savedOrder = orderDataService.findById(savedOrder.getId());
} catch (SomeException e) {
...
}

и поскольку у меня есть некоторая бизнес-логика в методе сохранения, я бы не хотел создавать поддельный результат, но получить к нему доступ и использовать его также в качестве результата для метода find.

1 Ответ

0 голосов
/ 06 марта 2019

Я думаю, вы можете использовать Spy и частичное издевательство.В общем случае, предполагая, что класс подобен этому:

public class MockedBean {
    public String mockedMethod() {
        return "should have been mocked!";
    }
    public String notMockedMethod() {
        return "should NOT have been mocked!";
    }
}

Yuu может выполнять частичное моделирование, например:

@Test
public void test() {
    MockedBean mb = new MockedBean();
    MockedBean spy = Mockito.spy(mb);
    when(spy.mockedMethod()).thenReturn("THE MOCKED VALUE");
    log.info("{}", spy.mockedMethod());
    log.info("{}", spy.notMockedMethod());
}

Это приведет к выводу типа:

20: 32: 14.180 [main] ИНФОРМАЦИЯ org.example.mockito.partialmock.PartialMock - РАЗМЕЩЕННОЕ ЗНАЧЕНИЕ
20: 32: 14.183 [main] INFO org.example.mockito.partialmock.PartialMock - НЕ ДОЛЖНО бытьиздевались!

...