0

私はテストが初めてで、MVC アプリケーションのテストを開始したばかりです。

現在、コントローラーのアクション メソッドが適切なリポジトリ メソッドを呼び出しており、データベースからデータを読み書きするかどうかをテストしています。

私がテストしているのは、アクション メソッドの戻り値の型がViewPartialViewまたはRedirectToRouteなどであるかどうかです。

コントローラーの Action メソッドがリポジトリ内の正しい関数を呼び出しているかどうかをテストすることは、あまり意味がないというコメントがいくつかあります。本当ですか?

リポジトリ パターンも使用する MVC アプリケーションの単体テストには何を含める必要がありますか。

4

3 に答える 3

1

リポジトリでアクションが正しいメソッドを呼び出しているかどうかを確認することは理にかなっていますが、データベースへのアクセスを避けるためにそれをモックする必要があります。単体テストは、外部コンポーネントから分離する必要があります。

理想的ではありませんが、「実際の」データベースをメモリ内の軽量 Sqlite に置き換えて、テストでデータベース アクセスをモックすることを避けることができます。

私は個人的Moqにモッキング フレームワークとして使用していますが、.NET 用の十分に成熟したモッキング フレームワークです。

メソッドが呼び出されたかどうかをテストすると、ステータスではなく動作がチェックされることを考慮してください。これにより、内部実装に依存するようになるため、テストがより脆弱になりますが、シナリオによっては、完全に有効になる可能性があります。

于 2013-08-16T13:37:25.130 に答える
0

これはさまざまなシナリオに依存します。たとえば、コントローラーでは、1 つの Action bool SaveEmployee()があり、その内部でサービスを呼び出し、次にデータベース層を保存します。そのため、Emp が実際に db に保存されているかどうかをテストしても意味がありません。対応するデータベース レイヤー関数の別の単体テストで行う必要があるためです。ここでは、成功、失敗、重複、または何らかの例外をスローした後のステータスを確認するだけです。関数を単純にモックして bool または string (必要に応じて Success など) を返し、期待される出力で実際の出力を検証できます。

于 2013-08-16T20:13:44.637 に答える