我试着测试事件的顺序,我需要一种可能,在JUunit test中通过testFixture更改给定事件的创建事件时间。
在我已经尝试过的测试方法中,我设置了testFixture的给定当前时间 并给予当前时间 到昨天
final Instant minus = Instant.now().minus(1, ChronoUnit.DAYS); testFixture.given(someInitializationEvent, someUpdateEvent).andGivenCurrentTime(minus) .when(reduceCommand) .expectEvents(new ReduceApprovedEvent(anyString, order.getQuantity()));
但是如果我开始这个测试,我得到一个事件,关于事件源处理程序方法 上(…) ,当前时间戳为昨天的瞬间。事件的时间戳未更改
@EventSourcingHandler protected void on(AvailableQuantityUpdatedEvent event, @Timestamp Instant timeStamp) { this.quantity = event.getQuantity(); this.lastUpdateFromPartner = Date.from(timeStamp); }
我怎么了? 我该怎么处理?
谢谢。
这个 givenCurrentTime() fixture的指令最初用于使用deadline manager测试最后期限。通过改变时间,人们可以触发最后期限。
givenCurrentTime()
然而,这些api可能会引起混淆,并使其用户相信它也应该为事件设置时钟。
另外,在fixture中,您可以在发布事件后将时钟设置为时间戳。即使 给定当前时间() 方法是改变事件的时钟,它不会影响任何已记录的事件。
给定当前时间()