我正在以一种测试驱动的方式使用ASP.NET MVC解决方案,并且我希望使用表单身份验证将用户登录到我的应用程序。我想要在控制器中结束的代码看起来像这样:
FormsAuthentication.SetAuthCookie(userName, false);
我的问题是,我如何编写一个测试来证明这些代码是正确的?
有没有办法检查SetAuthCookie方法是用正确的参数调用的?
有没有办法注入一个假的/模拟的FormsAuthentication?
发布于 2008-12-14 11:20:12
我将首先编写一个接口和一个封装此逻辑的包装类,然后在我的控制器中使用该接口:
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
,并验证控制器是否在其上调用了预期的方法。我不会对FormsAuthWrapper
类进行单元测试,因为它只是将调用委托给FormsAuthentication
,它会做它应该做的事情(微软保证:-)。
https://stackoverflow.com/questions/366388
复制相似问题