ASP.NET MVC单元测试 - 会话 [英] ASP.NET MVC Unit Testing - Sessions

查看:153
本文介绍了ASP.NET MVC单元测试 - 会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有搜索计算器,和谷歌我觉得我在做什么是假设是正确的,但结果似乎并不很顺利。

Having searched StackOverflow, and Google I think what I'm doing is suppose to be right, however results don't seem to be going well

    [TestMethod]
    public void LoginAction_Should_Return_View_and_User_Authenticated()
    {
        // Arrange
        var mock = new Mock<ControllerContext>();
        var mockSession = new Mock<HttpSessionStateBase>();
        mock.Setup(p => p.HttpContext.Session).Returns(mockSession.Object);

        var testData = FakeUserData.CreateTestUsers();
        var repository = new FakeUserRepository(testData);
        var controller = new AccountController(repository);
        controller.ControllerContext = mock.Object;

        // Act
        var result = controller.Login("testuser1", "testuser1");

        // Assert
        Assert.AreEqual("testuser1", controller.HttpContext.Session["Username"]);
        Assert.IsTrue((bool)controller.HttpContext.Session["IsAuthenticated"]);
        Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
    }

当我运行测试controller.HttpContext.Session的价值[用户名]为空,但是我的价值使用会话助手设置的用户名。我做得完全错误的,还是其他什么东西?任何帮助将大大AP preciated。

When I run the test the value of controller.HttpContext.Session["Username"] is null, however I set the value to the username using a Session helper. Am I doing something completely wrong, or something else? Any help would be greatly appreciated.

推荐答案

使用Mock.Verify检查底层code试图设置会话[用户名]。

Use Mock.Verify to check if underlying code tried to set Session["Username"].

如果您code需要设置会话变量并使用它 - 看看<一个href=\"http://weblogs.asp.net/bleroy/archive/2009/06/15/mocking-indexer-setters-with-moq.aspx\">here.

If your code needs to set session variable and use it - take a look here.

快速入门是无价的了。

这篇关于ASP.NET MVC单元测试 - 会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆