2009-03-10 5 views
3

Je viens juste de commencer avec MSTest (ou au moins les outils de test VS 2008, est-il une différence?)objets moqueurs lors de l'utilisation MSTest

Je suis désireux de tester le code qui utilise un objet de session. Évidemment, je n'ai pas de HttpContext et je ne peux pas en créer un, donc le code échoue avec une exception NullReferenceException.

Ce code est-il simplement non testable?

Répondre

1

Je ne sais pas à propos de testable mais il est certainement difficile à tester. Vous pouvez utiliser typemock, il peut créer des moqueurs et des stubs de pratiquement tout. Mais ce n'est pas gratuit.

Vous pouvez également essayer d'encapsuler les appels dans les éléments de session à l'intérieur d'un objet distinct et de les masquer derrière une interface. Ensuite, vous pouvez injecter cette interface dans votre code. Pour vos tests, vous pouvez injecter une implémentation fictive. Cela permettra de réaliser deux choses, votre code est plus facile à tester et vous n'êtes plus lié à l'implémentation de la session dans Asp.Net.

+0

+1 utilise une classe séparée. @ilivewithian lors de la configuration de l'injection de dépendance, vous pouvez injecter HttpContext.Current.Session ... sur votre test, vous passez juste le simulacre directement – eglasius

0

Quel niveau d'implication l'objet session joue-t-il dans la logique que vous voulez tester? Par exemple, si c'est juste une valeur qu'utilise asp.net, vous pouvez implémenter l'un des presentation patterns pour l'abstraire (et faciliter l'écriture d'un test)

Par exemple - la logique ci-dessous serait facile à tester en poussant les informations de session pour la mise en œuvre de vue

If UserObject.IsActive() Then 
    _View.SessionActive = True 
Else 
    _View.SessionActive = False 
End If 
Questions connexes