我正在以测试驱动的方式使用ASP.NET MVC解决方案,我想使用表单身份验证将用户登录到我的应用程序.我想在控制器中得到的代码看起来像这样:
FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何编写测试来证明这段代码的合理性?
有没有办法检查使用正确的参数调用SetAuthCookie方法?
有没有办法注入假/模拟FormsAuthentication?
我只是想模拟ActionExecutedContext,传递它,让过滤器稍微工作并检查结果.
有帮助吗?
你可以在这里找到过滤器的来源
(它有点改变,但目前不是重点).
所以 - 我想要单元测试,RememberUrl过滤器足够智能,可以在会话中保存当前的URL.
我目前正在研究我必须创建的新应用程序的单元测试.我已经完成了基本的测试(测试ActionResult类非常好).但我确实想确定的一点是,我的解决方案中存在一个视图.我不是100%肯定我的测试是正确的,所以如果有人有建议,请不要犹豫!
这是一个测试,我必须检查我的安全控制器上的登录方法是做正确的事情:
[TestMethod]
public void Login()
{
var authProvider = new Mock<IAuthenticationProvider>();
var controller = new SecurityController(authProvider.Object);
var result = controller.Login() as ViewResult;
Assert.IsNotNull(result, "ActionResult should be of type ViewResult.");
Assert.AreEqual(result.ViewName, "login", "Does not render login page.");
}
Run Code Online (Sandbox Code Playgroud)
我对测试的解释是:
我想要的是第三个断言,看看要呈现的视图是否实际存在.
我的一些次要问题是:
谢谢!
注意:我明确地试图避免检查文件系统.我有点希望能够使用ViewEngine确认视图实际存在.