Как проверить код, который вызывает Instant.now () с JUnit 5? - PullRequest
2 голосов
/ 31 мая 2019

У меня есть код, который выглядит примерно так:

MyObject getMyObject() {
    Instant now = Instant.now();
    return myService.doSomething(now);
}

Я знаю, что PowerMock не поддерживается в JUnit 5, но мне интересно, может быть, есть решение по крайней мере для стандартного API, подобного датам.

Прямо сейчас я подшучиваю над экземпляром Instant с Mockito.any(), что неверно, так как мой тест не провалится, если я передам неправильный Instant.

1 Ответ

4 голосов
/ 31 мая 2019

Вы можете переместить создание текущего Мгновенного метода на уровень пакета:

MyObject getMyObject() {
    Instant now = getCurrentInstance();
    return myService.doSomething(now);
}

Instant getCurrentInstant(){
  Instant.now();
}

Тогда в своем тесте вы можете следить за SUT и высмеивать метод getCurrentInstant:

Sut sut = spy(new Sut());
doReturn(testInstance).when(sut).getCurrentInstant();

sut.getMyObject();
...