2008-11-19 8 views
3

Est-ce que quelqu'un sait comment tester UnitMapNode? Nous construisons des contrôles de navigation personnalisés, qui rendent les listes html non ordonnées de Site Maps avec des attributs personnalisés. J'essaie de suivre une première approche de test mais je trouve que SiteMapNode a des dépendances internes sur HttpContext. Pour parcourir le fichier de la carte du site, il insiste sur l'utilisation d'un chemin virtuel pour trouver le fichier de carte du site.Tests unitaires SiteMapNode

Je construire une carte du site, que je voudrais tester contre mais je ne veux pas créer mon environnement de tests unitaires dans le projet web (!)

Toutes les suggestions? Railleur? Surcharge les membres concernés?

Répondre

2

Une question plutôt terne, donc pas de surprise, il n'a pas eu de réponse! Pour tous ceux qui pourraient trébucher sur ce problème, voici ma solution préférée:

J'ai trouvé que la meilleure façon de gérer cela est de charger la carte du site physique dans un document XML. J'ai alors un NavigationNodeFactory, qui valide et construit mon propre arbre NavigationNode composite à partir du document XML. Ma classe NavigationNode est aussi opiniâtre que j'aime et contourne les problèmes que j'ai trouvés avec SiteMap et SiteMapProvider, à savoir une mauvaise testabilité pour les implémenteurs.

0

Je pense que le problème était peut-être que, d'après votre description, vous essayiez de tester une classe déjà existante, le SiteMapNode.

Vous voulez être tester la utilisation du nœud de plan du site dans votre application, donc je vous conseille que si vous voulez effectuer des actions sur la classe SiteMapNode, envelopper ce avec un ISiteMapProvider intermédiaire ou abstraite similaire de votre propre faire et avoir vos contrôles de navigation personnalisés interagissent avec cela.

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

+0

Merci pour votre réponse Justin. C'était ma route initiale. Malheureusement, le mappage des mappages SiteMaps impliquait l'écriture d'un code non DRY trop long à cause de la nature composite du graphe d'objet. –