代码之家  ›  专栏  ›  技术社区  ›  user1167253

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

  •  0
  • user1167253  · 技术社区  · 6 年前

    我试着测试事件的顺序,我需要一种可能,在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);
    }
    

    我怎么了? 我该怎么处理?

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Allard    6 年前

    这个 givenCurrentTime() fixture的指令最初用于使用deadline manager测试最后期限。通过改变时间,人们可以触发最后期限。

    然而,这些api可能会引起混淆,并使其用户相信它也应该为事件设置时钟。

    另外,在fixture中,您可以在发布事件后将时钟设置为时间戳。即使 给定当前时间() 方法是改变事件的时钟,它不会影响任何已记录的事件。