2011-02-28 10 views
7

Estoy construyendo una API REST usando ASP.NET MVC 3. Lo estoy haciendo al estilo BDD usando SpecFlow con NUnit como corredor de prueba.Mocking de proceso cruzado en ASP.NET

Dado que es una API REST, la prueba de las Url: s es, obviamente, muy importante, así que quiero poder realizar llamadas HTTP reales en las especificaciones.

Ahora estoy buscando consejos sobre cómo ir Cross Process Mocking. En resumen, quiero burlarme de la capa de datos con las entidades que genero en las Especificaciones.

En una aplicación de Rails, utilizaría Webrat para esto. ¿Hay algo equivalente a eso en .NET todavía?

Ya he intentado Deleporter pero no parece ser capaz de "enviar" construcciones avanzadas (Crear una cadena simple en las especificaciones y usarla en Deleporter funciona, pero no para una clase personalizada las propiedades todo se vuelve nulo)

¿Alguien tiene experiencias o consejos sobre cómo hacer esto?

Editar: lo que estaba intentando hacer en el Deleporter era algo como esto (soy consciente de que yo pudiera generar los modelos dentro del código Deleporter pero esto es un ejemplo simplificado, por lo que no iba a funcionar para mí):

var models = Builder<Foo>.CreateListOfSize(300); 
Deleporter.Run(() => 
{ 
    var mockService = new Mock<IFooService>(); 
    // Models will be a list of 300 Foos but the foos properties will all be null 
    mockService.Setup(s => s.GetStuff()).Returns(models); 
    ObjectFactory.Inject(mockService.Object); 
}); 
+0

Esto suena como algo que debe evitarse. ¿Puedes dar más detalles sobre por qué quieres hacerlo? – JontyMC

+1

Creo que el autor de Deleporter explica por qué querría hacer esto bastante bien en su publicación de blog; http://blog.stevensanderson.com/2010/03/09/deleporter-cross-process-code-injection-for-aspnet/ Cambie la configuración de las aplicaciones a Test para ver un ejemplo ... Quería probar toda mi aplicación en mis especificaciones, no solo los controladores ... – ullmark

+0

Quería probar mi aplicación desde el exterior. Como es una API de reposo, lo primero que hay que probar son las llamadas HTTP ... – ullmark

Respuesta

-1

creo que probablemente está buscando WatiN

+0

¿WatiN permite el tipo de proceso cruzado? burlarse de que el OP describe? –

+0

básicamente, WatiN abre una ventana del navegador para usted y hace una especie de prueba de integración. No es ideal para las pruebas de API, pero se trata de la única opción que he visto. Sé que hubo una charla hace un tiempo acerca de la creación de un Webrat para .NET, pero no estoy seguro de que alguien se haya topado con eso. –

+0

Tenía la impresión de que WatiN iniciaba el navegador de manera accidental y hacía todo lo que le indicaba en el código. ¿No ser capaz de inyectar cosas en la aplicación web en absoluto? – ullmark

1

Sólo estoy investigando esto por mí mismo. Mirando algunos de los example code in the GuestBookDemo, parece posible usar Deleporter para esto.

¿Tiene un ejemplo de exactamente lo que le gustaría poder hacer?

+0

Agregué un poco más de información acerca de lo que estaba tratando de hacer en deleporter . Estoy almacenando mis entidades en RavenDB y ahora me han informado sobre una mejor forma de hacer este tipo de pruebas con el cuervo. Comenzaré un servicio de cuervo dentro de mi proyecto Specs cuando se ejecuten las pruebas ... – ullmark