2010-03-09 3 views
1

Je travaille sur une application ASP.NET WebForm en utilisant le modèle MVP. Pour chaque formulaire Web, une classe Presenter est associée à la gestion de l'interface utilisateur et de la logique métier. Cependant, j'ai eu des problèmes lors de l'écriture de tests unitaires pour les présentateurs, puisque les valeurs de session sont utilisées dans les présentateurs. Et il n'y a pas de contexte HTTP existe lors de l'exécution du test unitaire (BTW j'utilise nUnit), ce qui rend impossible l'écriture d'un test unitaire pour les présentateurs.Présentateur de test dans le formulaire Web ASP.NET

Quelqu'un peut-il expliquer comment tester ces présentateurs?

Merci

+0

Je sais que c'est un peu vieille question, mais pouvez-vous s'il vous plaît me dire pourquoi votre présentateur a accès à l'objet Sessoin? Je veux dire que vous pouvez simplement passer la valeur Session à partir de la vue et vous n'aurez pas besoin d'une dépendance sur HttpContext et donc pas besoin de se moquer. Je demande depuis que je suis nouveau à ce genre de choses. – jim

Répondre

1

Vous pouvez modifier votre classe Presenter pour avoir une dépendance sur HttpContextBase. Une fois cela fait, vous pouvez fournir une version simulée de HttpContext à votre classe de présentateur pour les tests. En production, vous devez simplement fournir la propriété HttpContext.Current.

1

Hm, je suggère une autre approche. Je pense que votre présentateur ne devrait pas être au courant de HttpContext, PageLifeCycle etc. parce que vous devez le tester de manière isolée. Donc, plutôt que d'essayer de se moquer de IHttpContext, essayez d'extraire les valeurs dont vous avez besoin dans le présentateur (vous n'avez pas besoin de l'objet httpcontext entier, juste quelques valeurs de session, cookies etc) et injectez dans le présentateur via le constructeur du présentateur. Maintenant, vous pouvez le tester correctement.

Vive

Questions connexes