假设我有一个 Order
类,可以处于三种不同的状态:CheckedState
, PaidState
和 OrderedState
.
状态机将使用标准状态设计模式 (Gof) 实现。
您通常如何对此进行单元测试?您是否为每个状态类( CheckStateFixture
、 PaidFixture
、...)使用一个固定装置,并为上下文类使用另一个( OrderFixture
)?或者您是否只使用一个用于放置所有单元测试的上下文类( Order
)?
最佳答案
我更喜欢将状态基础设施与实体本身分开。
所以你会有
对于州基础设施,我建议每个实体使用一个固定装置,所以一个
OrderStateFixture
对于订单状态基础设施就足够了。主要测试将是确保订单状态正确切换的测试:
Order.Paid(amount)
成功执行后方法 Order.State 切换到付费 Order.Verify()
无一异常(exception)地返回 true/pass - Order.State 变为 Checked/Verified 关于unit-testing - 如何对状态机进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7797816/