Изменение пользователя в MVC 2 MockHttpContext прерывает тест? - PullRequest
2 голосов
/ 26 мая 2010

Я изменил следующую строку:

private readonly IPrincipal _user = 
       new GenericPrincipal(new GenericIdentity("someUser"), null /* roles */);

до

 private readonly IPrincipal _user = 
       new GenericPrincipal(new GenericIdentity("realUser"), null /* roles */);

, и следующий тест не прошел, но я не уверен, почему, и я не уверен, как его отследить. Я новичок в TDD

    [TestMethod]
    public void ChangePassword_Post_ReturnsRedirectOnSuccess()
    {
        // Arrange
        AccountController controller = GetAccountController();
        ChangePasswordModel model = new ChangePasswordModel()
        {
            OldPassword = "goodOldPassword",
            NewPassword = "goodNewPassword",
            ConfirmPassword = "goodNewPassword"
        };

        // Act
        ActionResult result = controller.ChangePassword(model);

        // Assert
        Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        RedirectToRouteResult redirectResult = (RedirectToRouteResult)result;
        Assert.AreEqual("ChangePasswordSuccess", redirectResult.RouteValues["action"]);
    }

Было бы очень полезно объяснить, как это работает и почему изменение someUser на realUser нарушило бы вышеуказанный тест.

1 Ответ

0 голосов
/ 26 мая 2010

Это говорит о том, что вход не выполнен. В этом можно убедиться, отладив тест и проследив через controller.ChangePassword(model);. Тестирование любого действия, связанного с аутентификацией, требует насмешки или замены поставщика членства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...