2011-06-22 6 views
0

これは、このフォローアップである:テストコントローラ方法+ DataAnnotations - のasp.net MVC 3

other SO post

これはDataAnnotationsに基づく検証は、コントローラで動作するかどうかをテストするための良い方法です:

改善提案は大歓迎です。また、通常、各検証/ビジネスルールごとに1つのテストを書くかどうかも疑問です。ありがとう!

答えて

0

リストされたコードは、見つかったものに基づいていますか?here

は個人的に、私は、注釈ごとにそのようなテストを書く:

[Test] 
    public void CreateEventViewModel_Description_Property_Contains_StringLength_Attribute() 
    { 
     // Arrange 
     PropertyInfo propertyInfo = typeof(CreateEventViewModel) 
             .GetProperty("Description"); 
     // Act 
     StringLengthAttribute attribute = propertyInfo 
         .GetCustomAttributes(typeof(StringLengthAttribute), true) 
      .Cast<StringLengthAttribute>() 
      .FirstOrDefault(); 

     // Assert 
     Assert.NotNull(attribute); 
     Assert.AreEqual(255, attribute.MaximumLength); 
    } 

私はBrad Wilsonが戻っていくつかの時間を掲示することをいくつかの情報のオフにこれをベース。これらのテストは、コントローラテストとは別に保存されます。今日、これを行うより効率的な方法があるかどうかはわかりません(このタイプのテストを行うために、より一般的なヘルパーメソッドを作成している人もいますが、私自身はそれぞれの属性に対して明示的なテストをしたいと思っています)データアノテーションは、期待通りにビューモデルに存在します。あなたの前の質問に記載されているよう

テストのこのタイプの組み合わせは、特に

UsersController.ModelState.AddModelError("username", "Bad username"); 

は、私は一般的に一緒に行くものですテストモデルの状態にテストと一緒に、属性を検証します。

+0

ありがとうございました。あなたが書いたことは理にかなっていますし、私のコードはあなたの最初の質問で言及したリンクに触発されています。あなたのテストは非常にきめ細かです。私がやっていることは間違っていると思いますか?特定のビジネスルールに違反しているビューモデルでコントローラメソッドをユニットとして渡しますか?あなたはコントローラをチェックするためにテストを書く必要がありますが、私はそうしません。どんなフィードバックが歓迎されますか? – cs0815

+0

私はそれに何か間違っているとは必ずしも見ません。上記のことは、特定の状態や予想されるエラーをテストすることではありません(テストメソッドのタイトルを見てみましょう。 )。それはすべてを見ている。個人的には、個々の注釈や可能性のあるエラー状態をテストする特定のテストが必要ですが、少し一般的なテストルーチンに慣れていれば、同様に機能します。 – Khepri

関連する問題