2008-09-25 6 views
7

J'ai écrit certains fournisseurs dans C# qui héritent de la classe providerbase. J'ai trouvé qu'il est difficile d'écrire des tests qui utilisent les fournisseurs car la plupart des frameworks moqueurs ne vous permettent que de se moquer d'une interface.Mocking classes qui ne sont pas des interfaces

Existe-t-il un moyen de simuler un appel à un fournisseur qui hérite de providerbase? Si ce n'est pas le cas, y a-t-il un modèle que je peux utiliser pour mettre en place des moqueurs de fournisseurs?

+2

Lorsque vous parlez de «fournisseurs», parlons-nous de fournisseurs ASP.NET? –

Répondre

6

Les frameworks de simulation devraient être capables de créer pour vous un objet simulé basé sur une classe, à condition qu'il y ait des membres virtuels.

Vous pouvez également jeter un oeil à Typemock

+0

hmm ... J'ai utilisé NMock et il semblerait que c'est une limitation de NMock pas une limitation de Mocking en général .. merci pour le lien – lomaxx

6

Je sais que Rhino se moque peut se moquer des classes aussi, la plupart des autres cadres moqueurs devraient avoir aucun problème avec cela non plus.
Les choses aussi gardent à l'esprit: La classe ne peut pas être scellée. Vous devez marquer les méthodes que vous voulez simuler virtuelles et la classe a besoin d'un constructeur sans argument, cela peut être protégé, privé ne fonctionnera pas. (juste essayé ceci)

Gardez à l'esprit que le cadre moqueur créera simplement une classe qui hérite de votre classe et crée un objet de ce type. Donc les constructeurs seront appelés. Cela peut provoquer un comportement inattendu dans vos tests.

1

RhinoMocks ou Moq créera des doubles de test pour les classes ainsi que pour les interfaces. Le type doit avoir des méthodes virtuelles ou être abstrait si. L'isolateur Typemock contourne ce problème.

Je suggérerais que les objets que vous voulez mocker devraient probablement être abstraits (dependency inversion principle).

Questions connexes