2009-07-16 15 views
0

J'ai créé un filtre d'action personnalisé (attribut) qui frappe une base de données. Comment puis-je tester les actions du contrôleur en injectant un référentiel fictif (afin qu'il ne frappe pas réellement la base de données pour le test unitaire) pour que le filtre d'action puisse être utilisé?Filtre d'action personnalisé de test d'unité

+0

Je pense que j'ai un contrôleur de base avec une propriété à l'IRepository. Le filtre d'action peut alors extraire le contrôleur du contexte, le convertir en type contrôleur de base (en supposant que la distribution réussisse) et avoir accès à IRepository. Il peut alors utiliser n'importe quel référentiel qui a été défini sur le contrôleur qui sera un faux d'un test unitaire. –

+0

Deux choses me préoccupent à ce sujet: 1) Comment puis-je m'assurer que le filtre personnalisé n'est pas appliqué à un contrôleur qui n'hérite pas du contrôleur de base? 2) Je viens de remarquer que le filtre d'action personnalisé n'est même pas appelé à partir d'un test unitaire puisque j'appelle l'action directement en tant que fonctions, par exemple. controller.Index(). Comment puis-je le tester? –

Répondre

0

J'ai eu la même question il y a quelques semaines.

How do I unit test an ActionFilter in ASP.NET MVC?

A la fin j'accepté que je dois tester le contrôleur sans filtre et tester le filtre lui-même.

+0

Merci pour l'info mais cela n'explique pas comment le filtre d'action peut fonctionner avec un référentiel fictif que je peux injecter à partir du test unitaire. –

0

Vous pouvez toujours utiliser StructureMap ou un autre modèle de localisateur de service.

Questions connexes