【发布时间】:2020-11-06 13:58:52
【问题描述】:
我正在尝试测试一个 Aggregate,并希望在夹具之外断言事件,甚至可能使用 Hamcrest 进行评估?
使用时间戳的示例
fixture.given()
.when(new UserCreateCommand("1","test@bob.com"))
.expectEvents(new UserCreatedEvent("1","test@bob.com");
fixture 让我可以轻松测试相等性,例如该命令准确地产生了这个事件,如果我想说引入一个时间戳,例如创建事件的时间,这并不容易
fixture.given()
.when(new UserCreateCommand("1","test@bob.com"))
.expectEvents(new UserCreatedEvent("1","test@bob.com", LocalDateTime.now());
这种期望永远不会起作用,因为 LocalDateTime.now() 永远不会精确地等于聚合中生成的时间戳。
我可以简单地将时间戳包含在命令负载中,但我更倾向于在聚合内部进行处理,以确保生成此时间戳的方式一致。
有没有办法从夹具中检索事件以独立于夹具进行断言,例如
UserCreatedEvent uce = fixture.given()
.when(new UserCreateCommand("1","test@bob.com"))
.extractEvent(UserCreatedEvent.class)
这将允许我使用其他断言库,例如 hamcrest:
例如
assertThat(uce.getCreatedAt(), is(greaterThanOrEqualto(LocalDateTime.now().minusSeconds(1);
【问题讨论】:
标签: axon