asp.net-mvc - 帮助为测试响应 header 创建单元测试,特别是 Cache-Control,以确定缓存是否已禁用

标签 asp.net-mvc unit-testing model-view-controller caching cache-control

场景:

我有一个基本 Controller ,它在 OnActionExecuting 覆盖中禁用缓存。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
    filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); //IE
    filterContext.HttpContext.Response.Cache.SetNoStore(); //FireFox 
}

如何创建单元测试来测试此行为?

最佳答案

尝试做同样的事情。迄今为止我拥有的最好的就是这个......

    [TestCase]
    public void ResponseNotFromCache()
    {

            System.Net.WebRequest rq = System.Net.WebRequest.Create("testmethod");
            System.Net.HttpWebResponse rs = rq.GetResponse() as System.Net.HttpWebResponse;

            Assert.IsFalse(rs.IsFromCache);
    }

一定有更好的方法!

更新:How can I test an event of a MVC controller

关于asp.net-mvc - 帮助为测试响应 header 创建单元测试,特别是 Cache-Control,以确定缓存是否已禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282337/

相关文章:

asp.net-mvc - 让 SubSonic MVC 模板与我的数据库一起使用

c# - 使类可测试

java - EJB3Unit 需要 @LocalBean 的业务接口(interface)

php - 使用 Symfony 路由的 MVC 路由

php - 路由冲突 Laravel

c# - 使用 ASP.net MVC 执行提交(回发)和重定向

asp.net-mvc - ASP.NET MVC : The right way to propagate query parameter through all ActionLinks

mysql - ASP.NET MVC 验证从 Controller 到 ajax 的查询

.net - 单元测试框架 - 主要功能是什么

java - 多个 Spring Controller 是否应该指向同一个 View 文件?