У меня есть действия контроллера, который проверяетМодульного тестирования действия контроллера Asp.net MVC
this.User.Identity.IsAuthenticated
Что вы предлагаете, как решать модульное тестирование на такое действие?
У меня есть действия контроллера, который проверяетМодульного тестирования действия контроллера Asp.net MVC
this.User.Identity.IsAuthenticated
Что вы предлагаете, как решать модульное тестирование на такое действие?
Я предлагаю высмеять свойство IsAuthenticated. Есть еще несколько сообщений по этому поводу, вы можете выполнить их поиск.
Вот пример насмешливого запроса, используя Moq:
var mockRequest = new Mock<HttpRequestBase>();
mockRequest.Setup(x => x.IsAuthenticated).Returns(true);
var mockContext = new Mock<ControllerContext>();
mockContext.Setup(x => x.Request).Returns(mockRequest.Object);
var myController = new MyController();
myController.ControllerContext = new ControllerContext(mockContext.Object, new RouteData(), myController);
Я настоятельно рекомендую, глядя в вездесущий «MvcMockHelpers» Скотт Хансельмана в коде, который является то, что я использую:
http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx
Но h ow вы бы ввели ваш издевавшийся HttpContext/Request? Пользовательское свойство является частью класса Controller и имеет собственный код, на который я не могу повлиять. –
Хорошо. Теперь ваш код имеет ответ. Свойство ControllerContext, о котором я не знал. Благодарю. –
В Moq вы используете SetupGet для издевательских свойств (настройка предназначена только для насмешек) –
Точно такой же вопрос: http://stackoverflow.com/questions/1106398/how-to-unit-test-an-mvc-controller-action-which-depends-on-authentification-in-c –
спасибо евгени ... не нашли его раньше ... –