Axon:JUnit测试。如何通过testFixture更改给定事件的创建时间?

时间:2018-11-12 07:52:51

标签: axon

我尝试测试事件的顺序,并且我需要通过JUunit测试中的testFixture更改给定事件的创建事件时间。

在我已经尝试过的测试方法中,我将给定的testFixture当前时间和GivennCurrentTime 设置为昨天

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);
}

我错了吗? 我该如何处理呢?

thx。

1 个答案:

答案 0 :(得分:1)

夹具的givenCurrentTime()指令最初旨在使用期限管理器测试期限。通过更改时间,可以触发截止日期。

但是,API可能会引起混乱,并使其用户相信也应该为事件设置时间。

此外,在您的装置中,您在发布事件后将时钟设置为时间戳。即使givenCurrentTime()方法将更改事件的时钟,也不会影响任何已记录的事件。