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