2011-10-17 21 views
10

CheckedState,PaidStateおよびOrderedStateの3つの異なる状態にあるOrderクラスがあるとします。ステートマシンの単体テスト方法は?

ステートマシンは、標準のState Design Pattern(Gof)を使用して実装されます。

これは通常どのようにユニットテストしますか?コンテキストクラスの各状態クラス(CheckStateFixturePaidFixture、...)とお互い(OrderFixture)のフィクスチャを使用していますか?または、すべての単体テストを入れるコンテキストクラス(Order)には1つのフィクスチャを使用しますか?

答えて

5

私はState Infrastructureをエンティティ自体とは別に保つことを前提にしています。 ですから、国のインフラ整備に向け

  • Entityクラス(注文)
  • 国家インフラクラス

を持つことになり、私は、エンティティごとに単一の固定具を使用することをお勧めし、その注文国のインフラストラクチャのための1 OrderStateFixtureは十分でしょう。

主なテストは注文状態が正しく切り替わることを確認テストを次のようになります。オーダーの初期状態はにOrder.Paid(amount)方法Order.Stateスイッチの成功し実行後

  • をNotCheckedされていることを確認し

    • Order.Verify()場合はtrueを返し有料/例外なく通過 - Order.Stateは/確認済み
    • あなたの答えのための
  • +0

    感謝をチェックになります!私は明確化したいと思いますが、これらの遷移テストをOrderFixtureまたはOrderStateFixtureに入れますか? –

    +0

    注文が移行自体を行う場合、担当者は移行担当者によって異なります。これはOrderFixtureまたはOrderStateFixtureのいずれかになります – sll

    +0

    これはいいですね、ありがとう! –

    関連する問題