假设我有一个Order
班级,它可以处于三种不同的状态CheckedState
:PaidState
和OrderedState
。
状态机将使用标准状态设计模式 (Gof) 实现。
您通常如何对此进行单元测试?您是否为每个状态类(CheckStateFixture
, , ...)使用一个夹具,并为上下文类使用PaidFixture
另一个( )?OrderFixture
或者您是否只使用一个用于Order
放置所有单元测试的上下文类 ( ) 夹具?
假设我有一个Order
班级,它可以处于三种不同的状态CheckedState
:PaidState
和OrderedState
。
状态机将使用标准状态设计模式 (Gof) 实现。
您通常如何对此进行单元测试?您是否为每个状态类(CheckStateFixture
, , ...)使用一个夹具,并为上下文类使用PaidFixture
另一个( )?OrderFixture
或者您是否只使用一个用于Order
放置所有单元测试的上下文类 ( ) 夹具?
我更愿意将国家基础设施与实体本身分开。所以你会有
对于States Infrastructure,我建议每个实体使用一个fixture,因此OrderStateFixture
Order States Infrastructure 一个就足够了。
主要测试将是确保 Order 状态正确切换的测试:
Order.Paid(amount)
Order.State 方法后切换到已付款Order.Verify()
返回 true/无异常通过 - Order.State 变为 Checked/Verified