[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context
.Setup(c => c.Request)
.Returns(request.Object);
HomeController controller = new HomeController();
controller.HttpContext = context; //Here I am getting an error (read only).
...
}
у моего базового контроллера есть переопределение Initialize, которое получает this requestContext. Я пытаюсь передать это, но что-то делаю неправильно.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Где я могу получить дополнительную информацию о имитации моего RequestContext и HttpContext с помощью Moq? Я пытаюсь имитировать файлы cookie и общий контекст.
Создайте запрос, ответ и поместите их в HttpContext:
источник
Спасибо пользователю 0100110010101.
Это сработало для меня, и здесь у меня возникла проблема при написании тестового примера для приведенного ниже кода:
А вот строки, которые решили проблему
Может быть полезно для других.
источник
Вот как я использовал ControllerContext для передачи поддельного пути к приложению:
источник
Вот пример того, как это можно настроить: Mocking HttpContext HttpRequest и HttpResponse для UnitTests (с использованием Moq)
Обратите внимание на методы расширения, которые действительно помогают упростить использование этих фиктивных классов:
Вот пример того, как написать модульный тест с использованием moq, чтобы проверить, что HttpModule работает должным образом: модульный тест для HttpModule с использованием Moq для обертывания HttpRequest
Обновление: этот API изменен на
источник