Подтвердить что ты не робот

Тестирование модулей ASP.NET MVC - сеансы

Просматривая StackOverflow и Google, я думаю, что то, что я делаю, должно быть правильным, однако результаты не выглядят хорошо.

    [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 [ "Username" ] равно null, однако я устанавливаю значение для имени пользователя, используя помощник сеанса. Я делаю что-то совершенно неправильное или что-то еще? Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Используйте Mock.Verify, чтобы проверить, пытался ли базовый код установить Session [ "Username" ].

Если вашему коду нужно установить переменную сеанса и использовать его, посмотрите здесь.

Quickstart также бесценен.