2011-09-09 9 views
10

Ok - Me encanta NancyFx. ¡Escribir una aplicación web con esas pocas líneas es simplemente increíble!Prueba de manejo Nancy Módulos

Pero, ¿cómo probar su NancyModules en el nivel de la unidad?

Tenga en cuenta que conozco el excellent testframework suministrado con Nancy (Nancy.Testing en NuGet), que ofrece excelentes maneras de probar la pila de aplicaciones (casi) completa. Pero ahora me refiero a la prueba de nivel de la unidad que utilizo para dar cuerpo al contenido de mi NancyModule, de manera TDD.

Dado que las rutas se definen en el constructor, a menudo junto con una expresión lamda que constituye toda la acción, se siente un poco "inalcanzable" de una prueba de unidad. ¿Pero me he perdido algo obvio sobre cómo probar las acciones de la ruta?

Por ejemplo, ¿cómo se vería una unidad para esta sencilla aplicación?

public class ResouceModule : NancyModule 
{ 
    private IProductRepository _productRepo; 

    public ResourceModule(IProductRepository repo) : base("/products") 
    { 
     Get["/list"] = parameters => { 
      return View["productList.cshtml", repo.GetAllProducts()]; 
     }; 
    } 
} 

Ver allí - ahora escribí el código de producción antes de la prueba ... :) ¿Alguna sugerencia sobre cómo comenzar con la prueba?

Respuesta

11

Usted puede hacer la primera prueba dev con las herramientas de prueba que proporcionamos:

  • En su arranque de prueba de configurar un programa previo que sólo contiene el módulo que tiene bajo prueba y los objetos falsos que desee.
  • En su prueba, ejecute una ruta específica (como GET/list); es posible que desee una pequeña ayuda para eliminar algunos códigos repetidos, tal vez.
  • Afirma lo que regresa: tienes acceso completo a los objetos de solicitud y respuesta (para encabezados, cookies, etc.), junto con ayudantes para cuerpos HTML y, en 1.8, ayudantes para entregar respuestas JSON, XML y solo cadenas en el cuerpo.
  • Pase a la siguiente ruta, enjuague y repita.

Ok, por lo que no Estás a probar el módulo, pero si nos fijamos en la pila de llamadas, no hay mucho que hacer antes o después de golpear su ruta así que no es tan grande de un acuerdo en mi libro :-) Si realmente quieres probar el módulo en completo aislamiento, puedes construirlo tú mismo y explorar las rutas individuales en consecuencia (solo son diccionarios en el módulo).

+0

Gracias Steven - justo lo que estaba buscando –

4

Como parte de Nancy.Testing puede usar el bootsperper configurable para controlar la configuración, incluida la configuración de IoC. Eso debería permitir probar el módulo sin dependencias de nivel más bajo y habilitar TDD.

Cuestiones relacionadas