testing - Probando el componente windsor de Castle con el estilo de vida PerWebRequest
components castle-windsor (1)
En su prueba, puede suscribirse al evento ComponentModelCreated y cambiar el estilo de vida de sus componentes de solicitud por web a otra cosa. ( example ).
Si está escribiendo una prueba de integración con el alcance de una sola solicitud, Singleton debería hacerlo.
Si está escribiendo una prueba de integración que abarca múltiples solicitudes, podría usar un estilo de vida contextual para simular el alcance de las solicitudes.
Edición: incluye el código del ejemplo (que ya no está disponible):
container.Kernel.ComponentModelCreated += Kernel_ComponentModelCreated;
...
void Kernel_ComponentModelCreated(Castle.Core.ComponentModel model)
{
if (model.LifestyleType == LifestyleType.Undefined)
model.LifestyleType = LifestyleType.Transient;
}
Estoy tratando de hacer algunas pruebas con Castle Windsor involucrado, en una de mis pruebas quiero verificar los instaladores de Windsor, así que verifico que el contenedor pueda resolver mis componentes dada su interfaz.
Hasta ahora, bueno, el problema comienza cuando el componente tiene el estilo de vida PerWebRequest en su instalador, al principio se quejó de HttpContext. La corriente es nula, ya que se resolvió la creación de un contexto falso en la configuración de la prueba. Ahora tengo esta excepción en nunit. prueba
System.Exception: Parece que olvidó registrar el módulo http Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule Agregue '''' a la sección en su web.config. Si está ejecutando IIS7 en modo integrado, deberá agregarlo a la sección debajo de
Como estoy ejecutando esto desde NUnit, cómo puedo registrar el módulo o la clase en windsor para que funcione, o cómo se puede burlar, ya que en esta prueba no es realmente una solicitud web, solo verificando que el contenedor resuelva el tipo.
Y también ocurrirá lo mismo si realizo pruebas de integración con este componente fuera de una consulta web real, ¿hay alguna forma de hacer que esto funcione o realmente simular una solicitud web para que se puedan ejecutar estas pruebas?
Tranks por adelantado
Fer