2009-07-14 3 views
3

У меня есть действия контроллера, который проверяетМодульного тестирования действия контроллера Asp.net MVC

this.User.Identity.IsAuthenticated 

Что вы предлагаете, как решать модульное тестирование на такое действие?

+0

Точно такой же вопрос: http://stackoverflow.com/questions/1106398/how-to-unit-test-an-mvc-controller-action-which-depends-on-authentification-in-c –

+0

спасибо евгени ... не нашли его раньше ... –

ответ

5

Я предлагаю высмеять свойство 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

+0

Но h ow вы бы ввели ваш издевавшийся HttpContext/Request? Пользовательское свойство является частью класса Controller и имеет собственный код, на который я не могу повлиять. –

+0

Хорошо. Теперь ваш код имеет ответ. Свойство ControllerContext, о котором я не знал. Благодарю. –

+0

В Moq вы используете SetupGet для издевательских свойств (настройка предназначена только для насмешек) –

Смежные вопросы