Хорошо, @cem очень хорошо рассмотрел ваш второй вопрос.
Для вашего первого nerddinner , и, если я не ошибаюсь, при создании нового интернет-приложения с модульным тестом в Visual Studio, используйте следующие классы-макеты для HttpContext
,Он находится внизу этого файла .
Вы можете использовать их (или создать новое интернет-приложение + тесты с VS) и скопировать все поддельные классы для ваших тестов.(Я написал пример Moq ниже)
Это выглядит так:
public class MockHttpContext : HttpContextBase {
private IPrincipal _user;
public override IPrincipal User {
get {
if (_user == null) {
_user = new MockPrincipal();
}
return _user;
}
set {
_user = value;
}
}
public override HttpResponseBase Response
{
get
{
return new MockHttpResponse();
}
}
}
public class MockHttpResponse : HttpResponseBase {
public override HttpCookieCollection Cookies
{
get
{
return new HttpCookieCollection();
}
}
}
Не проверено, но для использования mock это будет выглядеть так:
var fakeReqBase = new Mock<HttpRequestBase>();
fakeReqBase.Setup(f => f.User).Returns(new GenericIdentity("FakeUser"));
//generic identity implements IIdentity
fakeUserRepo.Object;//this returns fake object of type HttpRequestBase
Оформить заказ Moq Quickstart .Его довольно легко привыкнуть, и свободный интерфейс действительно помогает.