asp.net-mvc – 如何在ASP.Net MVC中对自定义ActionFilter进行单元测试
|
所以我正在创建一个主要基于此项目 http://www.codeproject.com/KB/aspnet/aspnet_mvc_restapi.aspx的自定义ActionFilter. 我想要一个自定义操作过滤器,它使用http接受标头返回JSON或Xml.典型的控制器操作如下所示: [AcceptVerbs(HttpVerbs.Get)]
[AcceptTypesAttribute(HttpContentTypes.Json,HttpContentTypes.Xml)]
public ActionResult Index()
{
var articles = Service.GetRecentArticles();
return View(articles);
}
自定义筛选器会覆盖OnActionExecuted,并将对象(在此示例文章中)序列化为JSON或Xml. 我的问题是:我该如何测试? >我写什么测试?我是TDD新手,并不是100%确定我应该测试什么以及不测试什么.我想出了AcceptsTypeFilterJson_RequestHeaderAcceptsJson_ReturnsJson(),AcceptsTypeFilterXml_RequestHeaderAcceptsXml_ReturnsXml()和AcceptsTypeFilter_AcceptsHeaderMismatch_ReturnsError406(). 谢谢. 解决方法您只需要测试过滤器本身.只需创建一个实例并使用测试数据调用OnActionExecuted()方法,然后检查结果.它有助于尽可能地将代码分开.大部分繁重的工作都是在CsvResult类中完成的,可以单独测试.您无需在实际控制器上测试过滤器.使这项工作成为MVC框架的责任.public void AcceptsTypeFilterJson_RequestHeaderAcceptsJson_ReturnsJson()
{
var context = new ActionExecutedContext();
context.HttpContext = // mock an http context and set the accept-type. I don't know how to do this,but there are many questions about it.
context.Result = new ViewResult(...); // What your controller would return
var filter = new AcceptTypesAttribute(HttpContentTypes.Json);
filter.OnActionExecuted(context);
Assert.True(context.Result is JsonResult);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 带MVC结果的Response.Flush无效
- asp.net – 如何处理错误时使用jQuery.ajax()?
- asp.net-mvc-3 – 实体框架|代码优先|从CultureInfo.Name映
- Asp.net C的PDF或其他“报告查看器”选项#
- asp.net – 如何禁用提交行为的asp:ImageButton?
- 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法
- asp.net-mvc – 如何使用Linq to SQL配置mvc mini profiler
- 实体框架 – EF 7中的db.database.ExecuteSQLCommand等效项
- Asp.Net何时删除过期的缓存项?
- asp.net+js实现批量编码与解码的方法
- asp.net-mvc – ASP.net MVC支持带有连字符的URL
- asp.net-mvc – 如何在Asp.net MVC 2中替换默认的
- 如何最小化ASP.NET C#项目DLL大小?
- ASP.Net,C#.Net和VB.Net之间的区别?
- ASP.NET MVC:使用LINQ To SQL获取表单复选框到多
- asp.net – UserControl Viewstate在回发后丢失所
- asp.net – 如何强制netwtonsoft json序列化程序
- asp.net – 即使在IIS的web.config中使用标签后,
- asp.net-core – .net core(csproj)global.json’
- 经典ASP亚马逊s3休闲授权
