2

MVC デザイン パターンは初めてです。アクションのテスト メソッドの作成を開始しました。現在、次のテストメソッドを作成しています。

  • コントローラー アクションによって返されたビューをテストして、ビュー名を比較します。
  • コントローラー アクションによって返されるビュー データをテストします。
  • 1 つのコントローラー アクションが 2 番目のコントローラー アクションにリダイレクトするかどうかをテストします。

含める必要がある他のシナリオはありますか?

4

2 に答える 2

0

私は最近、同じ質問を自問する必要がありました。これが私がしたことです:

ビュー (ビュー データではない) をテストしているので、リダイレクトとビュー名をテストするだけで十分です。

データのテストを開始すると、システムの他の特定の部分が特定の方法で特定のデータを返すことが期待されます (マッパー、サービス レイヤー、リポジトリ)。しかし、今はビューをテストしていません。サービス レイヤーが特定の値を返し、マッパーがこれらの値を正しくマップすることをテストしています。だから私はこれを私のリポジトリ/サービステストに任せました。

人それぞれですが、人はそれぞれ違います。

于 2013-06-11T16:15:56.707 に答える
0

テストしようとしている正確なアクションを投稿できればうれしいです。ほとんどのことを取り上げたようですが、以下に考慮すべき考えをいくつか示します。

はい、ビュー名を比較する単体テストを作成します。誰かがあなたのアクションを別のビューにリダイレクトするように変更した場合、テストが失敗することを望みます。

アクションが RedirectRouteResult または ViewResult として返されるかどうかわからない。あなたのアクションがリダイレクトを実行しない限り、リダイレクト用の単体テストは書きません。実装されていないものとは対照的に、現在の動作をテストすることをお勧めします。アクションがリダイレクトを実行する場合、はい、そのためのテストを作成します。

ActionResult が ViewData yes を返す場合、テストを記述して、結果に期待されるビュー データが含まれていることを確認します。これは重要なテスト IMO です。

アクション内にリポジトリ呼び出しまたはサービス呼び出しがある場合は、期待されるパラメーターでモック/サービスが呼び出されたことを確認するテストを作成することもできます。Moq などの分離フレームワークを使用している場合は、この期待値を簡単に設定できます。常にではありませんが、アクション メソッドが些細な場合に役立つ場合があります。

さらに詳しく知りたい場合は、アクションメソッドが特定の属性で装飾されていることを確認するテストも作成します。たとえば、[HttpPost]、[HttpGet]、またはその他の属性を使用できます。

以下の投稿を参照してください。いくつかの例が示されています。 http://blog.rajsoftware.com/post/2012/12/04/Simple-test-helper-MVC-Action-has-decorated-with-a-certain-attribute.aspx

また、これらすべてのシナリオを 1 つの単体テストでテストしたくないということも明確にしておいてください。それらは別々のテストで行う必要があります。

重要なのは、アクションを見て、テストがアクションの実装された動作を可能な限りカバーしていることを確認することです。

于 2013-06-16T11:28:50.113 に答える