Вопрос

...абсолютно ничего?

Какую часть головоломки он заполняет Веб-формы ASP.NET и АСП.NET MVC соответственно?

Можете ли вы каким-то образом создать базовое приложение ASP.NET *, которое использует System.Web.Abstractions, чтобы его можно было использовать в обоих типах веб-приложений ASP.NET?

В таком случае, как они модифицировали классы из System.Web.Abstractions обратно в веб-формы ASP.NET?

Вы не можете создавать новые объекты из пространства имен, поэтому его нельзя использовать для насмешек, не так ли?

Обновлять:Извините, что не объяснил, что знаю проблему с тестированием HttpContext и других построенных ASP.NET-объектов.Но в любом случае спасибо за хорошие объяснения.

Это было полезно?

Решение

Пространство имен содержит типы, предназначенные для обертывания основных классов ASP.NET (например, HttpSessionState).

Что, хочешь знать, почему?

Многие из этих основных классов ASP.NET являются запечатанными или статическими, что делает невозможным разрыв зависимостей между ними и вашим кодом.ЭТО означает, что вы не можете имитировать эти основные зависимости, что значительно усложняет тестирование вашего кода ASP.NET.Таким образом, вместо того, чтобы напрямую манипулировать HttpResponse непосредственно в коде, вы манипулируете им с помощью HttpResponseWrapper, который во время тестирования можно заглушить или имитировать, чтобы контролировать поведение объекта HttpResponse.

Если вы когда-нибудь задумывались о создании этих оболочек или реализовывали одну или две из них раньше, вы знаете, что в этом пространстве имен проделано много работы, и я, например, рад, что они это сделали.

Другие советы

Это действительно для насмешки.— HttpContext — это запечатанный класс, и его нельзя (легко) высмеять.HttpContextBase не запечатан, и я считаю, что его методы виртуальны, что значительно упрощает издевательство.

Хотя вы не можете создать новый экземпляр HttpContextBase (скажем, для использования в WebForms), вы можете получить экземпляр через:

var ctx = new HttpContextWrapper(HttpContext.Current);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top