12

Orderの 3 つの異なる状態になるクラスがあるCheckedStatePaidStateOrderedStateます。

ステート マシンは、標準のステート デザイン パターン (Gof) を使用して実装されます。

通常、これをどのように単体テストしますか? 各ステート クラス ( CheckStateFixture、 、...) にフィクスチャを使用し、コンテキスト クラスにPaidFixture別のフィクスチャ ( ) を使用しますか? それとも、すべての単体テストを配置するOrderFixtureコンテキスト クラス ( ) に対して 1 つのフィクスチャのみを使用しますか?Order

4

1 に答える 1

5

State Infrastructure をエンティティ自体とは別に保持することを好みます。だからあなたは持っているでしょう

  • エンティティークラス (注文)
  • 状態インフラストラクチャ クラス

States Infrastructure の場合、エンティティごとに 1 つのフィクスチャを使用することをお勧めします。したがってOrderStateFixture、Order States Infrastructure 用に 1 つで十分です。

主なテストは、Order 状態が正しく切り替わることを保証するテストです。

  • 注文の初期状態が NotChecked であることを確認する
  • メソッドの正常な実行後、Order.Paid(amount)Order.State は Paid に切り替わります
  • 例外なしで true/pass を返す場合Order.Verify()- Order.State は Checked/Verified になります
于 2011-10-17T18:24:38.327 に答える