Pergunta

SiteMapNode teste

Alguém sabe como a unidade? Estamos construindo alguns controles de navegação personalizados, o que torna listas HTML não ordenadas de Mapas de site com atributos personalizados.

Eu estou tentando seguir uma primeira abordagem de teste, mas estou achando que SiteMapNode tem dependências internas sobre HttpContext. Para percorrer o arquivo de mapa do site que insiste em usar um caminho virtual para localizar o arquivo de mapa do site.

Eu tenho construir um mapa do site, o que eu gostaria de teste contra, mas eu não quero criar minha unidade testar ambiente no projeto web (!)

Todas as sugestões? Zombando? Substituindo os membros relevantes?

Foi útil?

Solução

Uma pergunta bastante aborrecido, por isso não surpreende que não obter uma resposta! Para qualquer outra pessoa que pode tropeçar este problema, aqui está a minha solução preferida:

Eu encontrei a melhor maneira de lidar com isso é para carregar o mapa do site físico em um documento XML. Em seguida, tenho um NavigationNodeFactory, que valida e constrói minha própria árvore NavigationNode composto a partir do documento XML.

classe Meu NavigationNode é tão teimoso como eu gosto e circumnavigates as questões que eu encontrei com SiteMap e SiteMapProvider, ou seja pobre capacidade de teste para os implementadores.

Outras dicas

Eu acho que o problema pode ter sido que a partir de sua descrição, você estava tentando test-primeiro uma classe já existente -. SiteMapNode

Você vai querer estar testando o uso do nó mapa do site dentro de sua aplicação, então eu aconselho que se você quiser executar ações na classe SiteMapNode, enrole isso com um ISiteMapProvider intermediário ou similar abstrato de sua própria criação e ter seus controles de navegação personalizadas interagem com isso.

Você pode então ter uma SiteMapNodeProvider de tempo de execução que põe em SiteMapNode para as operações, e uma StubbedSiteMapProvider para os testes de unidade que passam em seus valores de teste para os controles personalizados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top