相关疑难解决方法(0)

如何对使用FormsAuthentication的ASP.NET MVC控制器进行单元测试?

我正在以测试驱动的方式使用ASP.NET MVC解决方案,我想使用表单身份验证将用户登录到我的应用程序.我想在控制器中得到的代码看起来像这样:

FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何编写测试来证明这段代码的合理性?

有没有办法检查使用正确的参数调用SetAuthCookie方法?

有没有办法注入假/模拟FormsAuthentication?

tdd asp.net-mvc unit-testing forms-authentication mocking

47
推荐指数
1
解决办法
1万
查看次数

如何测试ASP.NET MVC中的动作过滤器?

需要一些指示.找到这个这个,但我仍然有点困惑.

我只是想模拟ActionExecutedContext,传递它,让过滤器稍微工作并检查结果.

有帮助吗?

你可以在这里找到过滤器的来源
(它有点改变,但目前不是重点).

所以 - 我想要单元测试,RememberUrl过滤器足够智能,可以在会话中保存当前的URL.

testing asp.net-mvc action-filter

15
推荐指数
1
解决办法
8542
查看次数

确保存在视图

我目前正在研究我必须创建的新应用程序的单元测试.我已经完成了基本的测试(测试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)

我对测试的解释是:

  • 在控制器上调用方法"Login"
  • 确认它呈现视图(通过检查它是否返回ViewResult对象)
  • 确认它呈现正确的视图(通过检查视图名称)

我想要的是第三个断言,看看要呈现的视图是否实际存在.

我的一些次要问题是:

  • 我应该分开这个测试吗?
  • 我应该重命名它(比如,错误,LoginRendersCorrectView或其他东西)

谢谢!


注意:我明确地试图避免检查文件系统.我有点希望能够使用ViewEngine确认视图实际存在.

asp.net-mvc unit-testing

7
推荐指数
2
解决办法
5254
查看次数