2009-01-23 4 views
1

Plusieurs sites Web asp.net mvc utilisent le même contrôleur et le même modèle.
Cette logique commune est placée dans des bibliothèques séparées. Ces bibliothèques utilisent HttpContext.Current.Session. Comment puis-je tester ces unités? Je lis à propos de StateValue mais je n'arrive pas à le saisir complètement. Où devrais-je obtenir cette chose StateValue? Est-ce une référence lib?Comment faire pour tester la bibliothèque de test qui repose sur l'objet Session

+0

Commander ce post: http://stackoverflow.com/questions/176347/asp-net-mvc-test-controllers-w-sessions-mocking –

Répondre

1

Vous pouvez utiliser des aides telles que des simulacres vu here

+0

J'ai trouvé l'utilisation de Moq très facile dans de telles situations. +1 à vous. – Perpetualcoder

1
  1. Votre code devrait utiliser IHttpSessionState pas HttpSessionState.
  2. Si vous recherchez la documentation MSDN pour IHttpSessionState, vous trouverez un exemple d'implémentation que vous pouvez soulever dans votre projet de test d'unité pour créer une session fictive.
  3. Remplacez le code en acquérant la session avec un délégué statique renvoyant IHttpSessionState.
  4. Initialiser ce délégué statique avec une fonction qui utilise HttpContext.Current.Session.
  5. Lors du test d'unité, remplacez le délégué par votre implémentation Mock de IHttpSessionState.
+0

Bien que cela semble merveilleux, il faudra que j'écrive une maquette complète de IHttpSessionState. Alors que cette StateValue que j'ai référencé semble m'offrir un système où je n'ai plus à m'inquiéter s'il y a une session ou pas. –

+0

Puisque vous avez déjà une base de code, je pense que vous constaterez que l'ajustement rétro de cette fonctionnalité StateValue est plus de travail que de se moquer de l'objet Session. D'autant plus que la documentation vous donne une bonne base pour créer le simulacre pour commencer. – AnthonyWJones

Questions connexes