无需模拟的测试
本文探讨了在软件开发中如何通过事件溯源和真实依赖进行测试,从而避免使用模拟对象(mocks)。作者提出了一种更接近实际运行环境的测试方法,通过直接操作数据库和事件流来验证系统行为,减少测试维护成本并提高测试可靠性。这种方法尤其适用于事件驱动架构和领域驱动设计(DDD)场景。
背景速读
- Event Sourcing 是一种软件架构模式,不存储当前状态,而是将系统中发生的每个“事件”作为不可变的历史记录持久化。重建状态只需重放这些事件。
- EventStoreDB 是该领域最知名的开源数据库,而 EventsourcingDB 是一个较新的竞争对手,本文来自其官方博客。
- “Mock”(模拟对象)是传统单元测试中的核心概念:用假对象替换真实依赖,以隔离被测代码。批评者认为 mock 使测试与实现细节耦合,导致脆弱的测试。
- 本文主张在事件溯源系统中,可以直接用真实的事件存储进行测试,无需 mock——因为事件流本身就是可追溯的、易于 setup 的测试数据。