2008-09-25 12 views
7

He estado escribiendo algunos proveedores en C# que heredan de la clase providerbase. Descubrí que es difícil escribir pruebas que usen los proveedores, ya que la mayoría de los frameworks burlones solo le permitirán simular una interfaz.Clases burlonas que no son interfaces

¿Hay alguna forma de burlar una llamada a un proveedor que hereda de la base de proveedores?

Si no, ¿hay algún patrón que pueda usar para implementar la burla de los proveedores?

+2

Cuando dice "proveedores", ¿estamos hablando de proveedores de ASP.NET? –

Respuesta

6

Los marcos de burla deben ser capaces de crear para usted un objeto simulado basado en una clase, siempre y cuando tenga miembros virtuales.

También es posible que desee echar un vistazo a Typemock

+0

hmm ... He estado usando NMock y parece que es una limitación de NMock, no es una limitación de Mocking en general ... gracias por el enlace – lomaxx

6

Sé que se burla de Rhino pueden burlarse de clases también, la mayoría de los otros marcos burlones deben tener ningún problema con esto tampoco.
Las cosas también tienen en cuenta: La clase no se puede sellar. Necesita marcar los métodos que quiere simular virtuales y la clase necesita un constructor sin argumentos, esto puede protegerse, el privado no funcionará. (acaba de probar esto)

Tenga en cuenta que el marco de simulación creará una clase que heredará de su clase y creará un objeto de ese tipo. Entonces los constructores serán llamados. Esto puede causar un comportamiento inesperado en sus pruebas.

1

RhinoMocks o Moq creará dobles de prueba para las clases y para las interfaces. El tipo tiene que tener métodos virtuales o ser abstracto. El aislador Typemock soluciona esto.

Sugeriría que los objetos que quiere burlarse probablemente sean abstractos (dependency inversion principle).

Cuestiones relacionadas