Question

... absolument rien?

Quelle partie du puzzle-t-il remplir pour WebForms ASP.NET de et ASP.NET MVC , respectivement?

Pouvez-vous créer en quelque sorte une base application ASP.NET * qui utilise System.Web.Abstractions de sorte qu'il peut être utilisé dans les deux types d'applications Web ASP.NET?

Dans ce cas, comment ont-ils rétrofit les classes System.Web.Abstractions de nouveau dans ASP.NET WebForms?

Vous ne pouvez pas nouveaux des objets de l'espace de noms, donc il ne peut pas être utilisé pour se moquant, peut-il?

Mise à jour : Désolé de ne pas être clair sur ce que je connais le problème avec les tests de HttpContext et d'autres build-it ASP.NET-objets. Mais merci pour les bonnes explications de toute façon.

Était-ce utile?

La solution

L'espace de noms contient des types qui sont conçues pour envelopper les classes de base de ASP.NET (tels que HttpSessionState).

Qu'est-ce que vous voulez savoir pourquoi?

Un grand nombre de ces classes d'ASP.NET de base sont scellés ou statiques, ce qui rend impossible de briser les dépendances entre eux et votre code. Cela signifie que vous ne pouvez pas se moquer de ces dépendances de base, ce qui rend beaucoup plus difficile à tester votre code ASP.NET. Ainsi, au lieu de manipuler directement le HttpResponse directement dans le code, vous le manipuler via HttpResponseWrapper , qui, pendant le temps de test, vous pouvez stub ou railler sur pour contrôler comment l'objet se comporte HttpResponse.

Si vous avez déjà pensé à la création de ces emballages, ou qui ont mis en œuvre un ou deux d'entre eux avant, vous sauriez qu'il ya beaucoup de travail enveloppé dans cet espace de noms, et moi, pour un, je suis content qu'ils l'ont fait .

Autres conseils

Il est en effet pour moqueur. - HttpContext est une classe scellée et ne peut pas être (facilement) moqué. HttpContextBase est pas cachetée et je crois qu'il est des méthodes sont virtuelles, ce qui rend beaucoup plus facile se moquant.

Alors que vous ne pouvez pas nouveau une instance de HttpContextBase (par exemple, pour une utilisation dans WebForms), vous pouvez obtenir une instance via:

var ctx = new HttpContextWrapper(HttpContext.Current);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top