2010-12-20 10 views
2

私はこのTDDのことで初めてですが、深刻な努力をしていますので、ここでいくつかのフィードバックを得たいと思っています。リクエスト検証をオフにする単体テスト方法は?

JavaScriptを小さくするための小さなWebサービスを作成しましたが、すべてのテストが成功してすべてがうまくいっていました。それから、私はバグに気付きました。alert('<script>');を小さくしようとすると、HttpRequestValidationExceptionが投げられます。

これで簡単に修正できます。私はコントローラに[AllowHtml]を追加するだけです。しかし、これが将来起こらないことを単体テストするための良い方法は何でしょうか?

以下は、私が最初に考えた:

[TestMethod] 
public void Minify_DoesntChokeOnHtml() 
{ 
    try 
    { 
     using (var controller = ServiceLocator.Current.GetInstance<MinifyController>()) 
     { 
      return controller.Minify("alert('<script></script>');"); 
     } 
    } 
    catch (HttpRequestValidationException) 
    { 
     Assert.Fail("Request validation prevented HTML from existing inside the JavaScript."); 
    } 
} 

私は、コントローラのインスタンスを取得し、その上にメソッドを実行しているのではなく、全体ASP.NETパイプラインを発射していますので、これは動作しません。

このために良い単位テストは何でしょうか?コントローラーメソッドのリフレクターで、[AllowHtml]属性が存在するかどうかを確認できますか?それは非常に構造的なようで、リファクタリングで生き残ることはできません。何か機能的な意味があるかもしれません。何か案は?

答えて

1

あなただけの2つのオプションがあります。インプロセスMVCをホストするか、あなたのシナリオをカバーします(例えばWatinを使用して)、ブラウザを使用して実行されます

まず

書き込み統合テストを。その方法をチェックします

セカンド

書き込みユニットテストが必要属性でマークされています。

私は最初のオプションを使用します。

関連する問題