Wow
让领域模型成为系统的核心。
class CartSpec : AggregateSpec<Cart, CartState>(
{
on {
val ownerId = generateGlobalId()
val addCartItem = AddCartItem(
productId = "productId",
quantity = 1,
)
givenOwnerId(ownerId)
whenCommand(addCartItem) {
expectNoError()
expectEventType(CartItemAdded::class)
expectState {
items.assert().hasSize(1)
}
// …- 问题
- 复杂业务规则需要可追溯的状态变化,以及跨聚合的流程协作。
- 设计
- 将每次写入建模为 命令 → 领域决策 → 事件 → 投影,并以 Given → When → Expect 规范验证行为。
- 边界
- 适用于业务规则与历史追溯足以支撑事件溯源成本的系统;简单 CRUD 未必需要。
