我尝试测试事件的顺序,并且我需要通过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。
答案 0 :(得分:1)
夹具的givenCurrentTime()
指令最初旨在使用期限管理器测试期限。通过更改时间,可以触发截止日期。
但是,API可能会引起混乱,并使其用户相信也应该为事件设置时间。
此外,在您的装置中,您在发布事件后将时钟设置为时间戳。即使givenCurrentTime()
方法将更改事件的时钟,也不会影响任何已记录的事件。