Domanda

Qualcuno sa come testare UnitMapNode? Stiamo creando alcuni controlli di navigazione personalizzati, che eseguono il rendering di elenchi HTML non ordinati da Site Maps con attributi personalizzati.

Sto provando a seguire un primo approccio di prova ma sto scoprendo che SiteMapNode ha dipendenze interne su HttpContext. Per attraversare il file della mappa del sito, insiste sull'uso di un percorso virtuale per trovare il file della mappa del sito.

Ho creato una mappa del sito, su cui mi piacerebbe testare ma non voglio creare il mio ambiente di test unità nel progetto web (!)

Qualche suggerimento? Mocking? Sostituzione dei membri pertinenti?

È stato utile?

Soluzione

Una domanda piuttosto noiosa, quindi nessuna sorpresa non ha avuto risposta! Per chiunque possa imbattersi in questo problema, ecco la mia soluzione preferita:

Ho trovato il modo migliore per gestire questo è caricare la mappa del sito fisica in un documento XML. Ho quindi un NavigationNodeFactory, che convalida e costruisce il mio albero composito NavigationNode dal documento xml.

La mia classe NavigationNode è pensata a mio piacimento e circumnaviga i problemi che ho riscontrato con SiteMap e SiteMapProvider, vale a dire una scarsa testabilità per gli implementatori.

Altri suggerimenti

Penso che il problema potrebbe essere stato che dalla tua descrizione, stavi tentando di testare prima una classe già esistente - SiteMapNode.

Dovrai testare l ' uso del nodo Sitemap all'interno della tua applicazione, quindi ti consigliamo di eseguire azioni sulla classe sitemapnode, avvolgerla con un ISiteMapProvider intermedio o simile abstract di tua creazione e fai in modo che i tuoi controlli di navigazione personalizzati interagiscano con questo.

È quindi possibile avere un SiteMapNodeProvider per il runtime che chiama SiteMapNode per le operazioni e uno StubbedSiteMapProvider per i test delle unità che passano i valori dei test ai controlli personalizzati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top