2010-05-06 3 views
9

¿Autofac tiene un equivalente al método AssertConfigurationIsValid de StructureMap? ¿O la validación de la configuración ocurre al crear el contenedor?Validación de configuración de autoacceso

Creo que el método AssertConfigurationIsValid comprueba que el contenedor puede crear todos los servicios configurados. Obviamente, no puede recoger errores de configuración más sutiles, relacionados con el alcance, por ejemplo, pero sería bueno saber que estamos haciendo todo lo que podemos para evitar problemas que podrían surgir en el tiempo de ejecución.

Respuesta

6

No creo que Autofac tenga validación, y se lanza una excepción en el tiempo de ejecución si un servicio no se puede resolver. Probablemente sea útil, pero siempre tiendo a escribir pruebas unitarias que validan que mi contenedor, o más bien mi modules, contenga esos servicios que espero que tenga. Las pruebas unitarias compensan con creces la falta de validación de contenedores.

Estas pruebas suelen seguir el patrón de

  1. Crear un recipiente con el módulo bajo prueba
  2. Para cada servicio requerido, prueba container.IsRegistered
  3. Siempre que sea posible, la prueba container.Resolve
+0

I fácilmente implementé las pruebas unitarias que sugirió, y ahora no me siento tan molesto porque Autofac no tiene validación incorporada. Gracias por tu excelente respuesta. – JulianM

+0

@Serilla - me alegra oír eso. ¡Buena suerte! –

+0

¿Cómo puedo hacer esto con servicios donde utilizo fábricas para generarlos? P.ej. Tengo un servicio que depende de algunos otros servicios y una cadena. Esa cadena no está registrada en autofac y generalmente utilizo una fábrica con esa cadena como parámetro para resolver el servicio. Actualmente mi prueba de unidad ignora esta fábrica y falla en el servicio porque la cadena requerida no está registrada. – SamuelDebruyn

Cuestiones relacionadas