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]属性が存在するかどうかを確認するためのコントローラーメソッドのリフレクター?これは非常に構造的であり、リファクタリングに耐えられないようです。機能的なものの方が理にかなっているかもしれません。何か案は?

4

1 に答える 1

1

2つのオプションしかありません。

初め

シナリオをカバーするMVCをインプロセスでホストするか、ブラウザーを使用して(たとえば、Watinを使用して)実行する統合テストを記述します

2番

メソッドが必要な属性でマークされていることを確認する単体テストを作成します。

私は最初のオプションで行きます。

于 2011-02-02T11:23:57.253 に答える