我如何unit testing使用FormsAuthentication的ASP.NET MVC控制器?
我正在以一种testing驱动的方式处理ASP.NET MVC解决scheme,我想使用表单身份validation将用户login到我的应用程序。 我想在控制器中结束的代码看起来像这样:
FormsAuthentication.SetAuthCookie(userName, false);
我的问题是如何编写一个testing来certificate这个代码?
有没有办法来检查SetAuthCookie方法调用正确的参数?
有什么方法注入假/模拟FormsAuthentication?
我将开始编写一个接口和封装类,封装这个逻辑,然后使用我的控制器中的接口:
public interface IAuth { void DoAuth(string userName, bool remember); } public class FormsAuthWrapper : IAuth { public void DoAuth(string userName, bool remember) { FormsAuthentication.SetAuthCookie(userName, remember); } } public class MyController : Controller { private readonly IAuth _auth; public MyController(IAuth auth) { _auth = auth; } }
现在IAuth
可以很容易地在unit testing中被IAuth
,并validation控制器调用它的预期方法。 我不会unit testingFormsAuthWrapper
类,因为它只是将调用委托给FormsAuthentication
来完成它应该做的事(Microsoft保证:-))。
- 具有键“XXX”的ViewData项的types为“System.Int32”,但必须为“IEnumerable <SelectListItem>”types
- 为什么CheckBoxFor呈现额外的input标记,以及如何使用FormCollection获取值?
- 自定义授权属性
- 在Asp.Net MVC中设置“主页”
- EF5:无法将文件“{0}”附加为数据库“{1}”
- 如何更改ASP.NET MVC中的默认validation错误消息?
- HttpPostedFileBase总是在ASP.NET MVC中返回null
- 如何在使用Layout时在视图中添加脚本src
- 混合Angular和ASP.NET MVC / Web API?