繁体   English   中英

如何对关闭请求验证进行单元测试?

[英]How to unit test for turning off request validation?

我是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]属性是否存在? 这看起来非常结构化,不太可能在重构中幸存下来。 某些功能可能更有意义。 有任何想法吗?

您只有两种选择:

第一

编写集成测试 ,该测试将托管MVC进行中或使用将覆盖您情况的浏览器(例如使用Watin)运行。

第二

编写单元测试 ,以检查该方法是否标记了所需的属性。

我会选择第一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM