Pregunta

Ok, amo a Nancyfx. ¡Escribir una aplicación web con esas pocas líneas es simplemente increíble!

Pero, ¿cómo se prueba sus nancymodules en el nivel de la unidad?

Tenga en cuenta que soy consciente del Excelente TestFramework suministrado con Nancy (Nancy. Pero ahora me refiero al unidad Prueba de nivel que uso para desarrollar el contenido de mi NancyModule, en moda TDD.

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

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

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

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

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

¿Fue útil?

Solución

Puede hacer prueba el primer desarrollo con las herramientas de prueba que proporcionamos:

  • En su inicio de prueba, configure un bootstrapper que solo contiene el módulo que tiene en prueba y cualquier objeto falso que desee.
  • En su prueba, ejecute una ruta específica (como Get /List): es posible que desee un pequeño ayudante para que esto elimine algún código repetido tal vez.
  • Afirme en lo que regresa: tiene acceso completo a los objetos de solicitud y respuesta (para encabezados, galletas, etc.), junto con ayudantes para cuerpos HTML y, en 1.8, ayudantes para entregar JSON, XML y solo respuestas de cadena en el cuerpo.
  • Pase a la siguiente ruta, enjuague y repita.

Ok, entonces no lo eres sólo Probar el módulo, pero si mira la pila de llamadas, no está sucediendo mucho antes o después de llegar a su ruta, por lo que no es tan importante en mi libro :-) Si realmente desea probar el módulo completo Aislamiento, entonces puedes construirlo tú mismo y pinchar las rutas individuales en consecuencia (son solo diccionarios en el módulo).

Otros consejos

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top