Аксон: Юнит Тест. Как изменить время создания заданных событий при помощи testFixture? - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь проверить порядок событий, и мне нужна возможность изменить время создания заданных событий с помощью testFixture в тесте JUunit.

в методе тестирования, который я уже попробовал, я установил текущее время testFixture и значение GivenCurrentTime вчера

final Instant minus = Instant.now().minus(1, ChronoUnit.DAYS);

testFixture.given(someInitializationEvent, someUpdateEvent).andGivenCurrentTime(minus)
        .when(reduceCommand)
        .expectEvents(new ReduceApprovedEvent(anyString, order.getQuantity()));

но если я начну этот тест, то получу событие по методу обработчика источника события on (...) с текущей отметкой времени вчера. отметка времени события не изменилась

@EventSourcingHandler
protected void on(AvailableQuantityUpdatedEvent event, @Timestamp Instant timeStamp) {
  this.quantity = event.getQuantity();
  this.lastUpdateFromPartner = Date.from(timeStamp);
}

что я не прав? И как я могу справиться с этим?

ТНХ.

1 Ответ

0 голосов
/ 12 ноября 2018

Инструкция givenCurrentTime() для прибора изначально предназначалась для тестирования сроков с помощью диспетчера сроков.Изменяя время, можно запускать крайние сроки.

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

Кроме того,в своем приборе вы устанавливаете часы на метку времени после публикации событий.Даже если бы метод givenCurrentTime() изменил часы события, он не затронул бы уже записанные события.

...