Как установить HttpContext.Current.User.Identity.Name для модульного тестирования - PullRequest
3 голосов
/ 13 января 2012

Справочная информация:

Я тестирую функцию в ASP.NET 4.0 (веб-формы, а не MVC) и использую модульное тестирование, встроенное в Visual Studio 2010. I 'Мы создали отдельный тестовый проект и создали тестовый класс для каждого класса в веб-проекте.

Вопрос:

Я столкнулся с проблемой с одной из функций, которая использует HttpContext.Current.User.Identity.Name как часть логики.Как установить это значение в классе или методе проекта модульного тестирования, чтобы я мог протестировать эту функцию?

Обновление:

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

[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\DEV\\ProjectName\\ClientWeb", "/")]
[UrlToTest("http://localhost:9018/")]
public void GetLoginTest()
{
  // test code
}

Ответы [ 2 ]

3 голосов
/ 13 января 2012

Вы задаете неправильный вопрос.HttpContext.Current.User.Identity - это зависимость, которую вы должны инкапсулировать, прежде чем сможете выполнить модульное тестирование своего кода.Если вы инкапсулированы (возможно, за интерфейсом), вы можете заменить абстракцию на ваши тестовые данные / объект.

1 голос
/ 13 января 2012

Вы можете создать свой собственный Principal, внедрив IPrincipal, в котором вам нужно будет определить пользовательский Identity с помощью интерфейса IIdentity, внутри которого вы будете возвращать свое значение для Nameсвойство.

Затем вы можете установить HttpContext.Current.User в свой пользовательский объект Principal.

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