Domanda

Ho scritto alcuni provider in c # che ereditano dalla classe providerbase. Ho scoperto che è difficile scrivere test che utilizzano i provider poiché la maggior parte dei framework di derisione ti consentirà solo di deridere un'interfaccia.

Esiste un modo per deridere una chiamata a un provider che eredita da providerbase?

In caso contrario, esiste un modello che posso utilizzare per implementare il beffardo dei provider?

È stato utile?

Soluzione

I framework di derisione dovrebbero essere in grado di creare per te un oggetto simulato basato su una classe, purché abbia membri virtuali.

Potresti anche dare un'occhiata a Typemock

Altri suggerimenti

So che anche i derisione di Rhino possono deridere le classi, anche la maggior parte degli altri framework di derisione non dovrebbe avere problemi con questo.
Anche le cose da tenere a mente: la classe non può essere sigillata. Devi contrassegnare i metodi che vuoi prendere in giro virtuale e la classe ha bisogno di un costruttore senza argomenti che possano essere protetti, privato non funzionerà. (appena provato)

Tieni presente che il framework beffardo creerà semplicemente una classe che eredita dalla tua classe e crea un oggetto di quel tipo. Quindi verranno chiamati i costruttori. Ciò può causare comportamenti imprevisti nei test.

RhinoMocks o Moq creerà duplicati di test per le classi e per le interfacce. Il tipo deve avere metodi virtuali o essere astratto comunque. L'isolatore Typemock aggira questo problema.

Suggerirei che gli oggetti che vuoi deridere probabilmente dovrebbero essere astratti ( principio di inversione di dipendenza ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top