2009-05-15 7 views
1

Je trouve qu'un point de rupture commun dans notre configuration est mvc lorsque le contrôleur retourneTests unitaires asp.net mvc - Est-ce que viewengine peut trouver la vue?

return View(); 

ou autre, et l'ViewEngine ne trouve pas la vue. Je voudrais pouvoir tester mes contrôleurs, puis exécuter ExecuteResult sur le ViewResult résultant, mais ViewEngine sous-jacent est tellement lié aux répertoires virtuels que je n'arrive pas à savoir comment le tester.

Idéalement, j'aimerais vraiment pouvoir rendre la vue et déterminer si elle a été trouvée.

Je ne trouve pas grand-chose à ce sujet sur le net et je me demande à quel point asp.net mvc est 'testable'.

Répondre

1

Je pense que votre problème est que vous essayez de tester trop.

Sans voir le code est un peu difficile, mais certains points de départ initiale:

1) découpler votre contrôleur de vos répertoires virtuels - le contrôleur doit être isolé et ne pas dépendre de la configuration des serveurs Web sous-jacent. Qu'est-ce que vous accédez via cela?

Votre contrôleur renverra un ViewResult, auquel votre modèle doit être associé et que vous pouvez ensuite utiliser pour vérifier que les données correctes sont transmises à votre View. Utilisation de stubs \ mocks et de l'injection de dépendances pour vérifier que le contrôleur communique correctement avec les services sous-jacents tels que votre référentiel de base de données. Avoir un ensemble distinct de tests d'intégration pour couvrir l'implémentation de vos référentiels.

2) Utilisez une infrastructure de test Web telle que Watin pour vérifier les rendus de la vue comme prévu. Cela vous permettra d'interagir avec la page Web et le dom HTML pour vérifier qu'il fonctionne comme prévu. Testez vos contrôleurs via des tests unitaires. Deux tests distincts pour deux couches différentes.

Le but des tests unitaires est de garder vos tests et votre code aussi isolés que possible.