我如何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保证:-))。