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