System.Www.Abstrakcje: do czego to służy?

... absolutnie nic?

Jaką część układanki wypełnia ASP.NET WebForms i ASP.NET MVC ?

Czy można jakoś stworzyć ASP.NET * base-aplikacja wykorzystująca System.Www.Abstrakcji, więc może być stosowany w obu rodzajach aplikacji ASP. NET-web?

W takim przypadku, jak oni retro-dopasować klasy w systemie.Www.Abstrakcje z powrotem do ASP.NET WebForms?

Nie można dodawać nowych obiektów z przestrzeni nazw, więc nie może być używany do wyśmiewania, prawda?

Update : Przepraszam za niejasności, że znam problem z testowaniem HttpContext i innych build-it ASP. NET-objects. ale i tak dzięki za dobre wyjaśnienia.

Author: Seb Nilsson, 2009-04-06

2 answers

Przestrzeń nazw zawiera typy przeznaczone do zawijania ASP.NET podstawowych klas (takich jak HttpSessionState).

Co, chcesz wiedzieć dlaczego?

Wiele z tych rdzeni ASP.NET klasy są zapieczętowane lub statyczne, co uniemożliwia zerwanie zależności między nimi a kodem. Oznacza to, że nie możesz wyśmiewać tych podstawowych zależności, co znacznie utrudnia testowanie twojego ASP.NET kod. Tak więc, zamiast bezpośrednio manipulować HttpResponse bezpośrednio w kodzie, manipulujesz nim za pomocą HttpResponseWrapper, który w czasie testu można stubować lub wykreślać, aby kontrolować zachowanie obiektu HttpResponse.

Jeśli kiedykolwiek myślałeś o stworzeniu tych wrapperów lub zaimplementowałeś jedną lub dwie z nich wcześniej, wiesz, że w tej przestrzeni nazw jest wiele pracy i cieszę się, że to zrobili.

 35
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 11:40:20

To jest rzeczywiście do wyśmiewania. - HttpContext jest klasą zamkniętą i nie można jej (łatwo) wyśmiewać. HttpContextBase nie jest zapieczętowany i wierzę, że jego metody są wirtualne, co znacznie ułatwia wyśmiewanie.

Chociaż nie można utworzyć nowej instancji HttpContextBase (powiedzmy, do użytku w formularzach internetowych), można ją uzyskać poprzez:

var ctx = new HttpContextWrapper(HttpContext.Current);
 17
Author: Troy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 11:39:49