Question

Quelqu'un sait-il comment effectuer des tests unitaires SiteMapNode? Nous sommes en train de créer des contrôles de navigation personnalisés, qui rendent les listes HTML non ordonnées à partir de cartes du site avec des attributs personnalisés.

Je tente de suivre une approche test en premier, mais je constate que SiteMapNode a des dépendances internes sur HttpContext. Pour parcourir le fichier de carte de site, il est impératif d'utiliser un chemin virtuel pour rechercher le fichier de carte de site.

J'ai créé un plan de site sur lequel je voudrais tester mais je ne souhaite pas créer mon environnement de test d'unité dans un projet Web (!)

Des suggestions? Railleur? Remplacer les membres concernés?

Était-ce utile?

La solution

Une question plutôt ennuyeuse, alors pas de surprise, il n’a pas eu de réponse! Pour ceux qui risquent de tomber sur ce problème, voici la solution que je préfère:

J'ai trouvé le meilleur moyen de gérer cela: charger la carte du site physique dans un document XML. J'ai ensuite un NavigationNodeFactory, qui valide et construit mon propre arbre composite NavigationNode à partir du document XML.

Ma classe NavigationNode est aussi opinionée que je le souhaite et fait le tour des problèmes rencontrés avec SiteMap et SiteMapProvider, à savoir une faible testabilité pour les développeurs.

Autres conseils

Je pense que le problème provient peut-être du fait que vous tentiez de tester d'abord une classe déjà existante, le SiteMapNode.

Vous souhaitez tester l'utilisation du nœud du sitemap dans votre application, je vous conseille donc, si vous souhaitez effectuer des actions sur la classe sitemapnode, encapsulez-le avec un ISiteMapProvider intermédiaire ou similaire. résumé de votre propre fabrication et avoir vos contrôles de navigation personnalisés interagissent avec cela.

Vous pouvez ensuite avoir un SiteMapNodeProvider pour l'exécution appelant SiteMapNode pour les opérations et un StubbedSiteMapProvider pour vos tests unitaires qui transmettent vos valeurs de test aux contrôles personnalisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top