Я знаю, что разница между HttpContext
и HttpContextWrapper
ниже...
HttpContext
Это винтажный контекст asp.net. Проблема заключается в том, что он не имеет базового класса и не является виртуальным и, следовательно, неприменим для тестирования (не может его издеваться). Он рекомендовал не передавать его в качестве аргументов функции, а вместо этого передавать переменные типа HttpContextBase.
HttpContextBase
Это замена (new to С# 3.5) для HttpContext. Так как он абстрактный, он теперь макет. Идея заключается в том, что ваши функции, ожидающие передачи контекста, должны ожидать получить один из них. Он конкретно реализован HttpContextWrapper
HttpContextWrapper
Также новый в С# 3.5 - это конкретная реализация HttpContextBase. Чтобы создать одну из них на обычной веб-странице, используйте новый HttpContextWrapper (HttpContext.Current).
Идея состоит в том, что для проверки работоспособности вашего кода вы объявляете все свои переменные и функциональные параметры типа HttpContextBase и используете инфраструктуру IOC, например Castle Windsor, для ее ввода. В нормальном коде замок должен ввести эквивалент "нового HttpContextWrapper (HttpContext.Current) ', в то время как в тестовом коде вам будет дано макет HttpContextBase.
Но я не знаю о его реальном использовании. Я слышал, что он полезен в Unit Testing по сравнению с Web Forms. но как это полезно?
Я также знаю, что мы можем использовать его для выполнения контроллера и действия, как указано здесь