124 votes

Tester si une classe a un attribut?

J'essaie de faire un peu de développement Test-First, et j'essaie de vérifier que mes classes sont marquées avec un attribut:

 [SubControllerActionToViewDataAttribute]
public class ScheduleController : Controller
 

Comment est-ce que je teste l'unité que l'attribut a été attribué à la classe?

144voto

Marc Gravell Points 482669

regarde ça

 Attribute.GetCustomAttribute(typeof(ScheduleController),
    typeof(SubControllerActionToViewDataAttribute))
 

n'est pas nul ( Assert.IsNotNull ou similaire)

(La raison pour laquelle je l'utilise plutôt que IsDefined est que la plupart du temps, je veux aussi valider certaines propriétés de l'attribut ....)

90voto

RichardOD Points 19942

Le même que vous normalement vérifier pour un attribut sur une classe.

Voici un exemple de code.

 typeof(ScheduleController)
.IsDefined(typeof(SubControllerActionToViewDataAttribute), false);
 

Je pense que dans de nombreux cas, il est faux de rechercher l’existence d’un attribut dans un test unitaire. Comme je n’ai pas utilisé la fonctionnalité de sous-contrôleur de MVC contrib, je ne peux cependant pas dire si elle est appropriée dans ce cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X