【发布时间】:2011-05-28 11:21:06
【问题描述】:
我是 TDD 方面的新手,但我正在认真努力,所以我希望在这里得到一些反馈。
我创建了一个小型 Web 服务来缩小 JavaScript,一切都很好,我的所有测试都通过了。然后我注意到了一个错误:如果我尝试缩小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] 属性是否存在?这似乎非常结构化,并且不太可能在重构中幸存下来;功能性的东西可能更有意义。有什么想法吗?
【问题讨论】:
标签: asp.net unit-testing asp.net-mvc-3 request-validation