Soy nuevo en AutoFixture, así que no sé si la siguiente idea tendrá sentido o será razonable. Tengo una aplicación que estoy a cargo de la prueba de integración , y hace un uso intensivo de Castle Windsor. Para simplificar la administración de dependencias y hacer que mis pruebas se parezcan más al código de la aplicación, he estado construyendo el contenedor Windsor en mi método de inicialización de prueba y en el contenedor que lo usa. Resuelva para crear una instancia del código que estoy probando. Me gustaría alejarme de ese enfoque, ya que ha limitado mi flexibilidad en ciertas situaciones.Técnica para usar AutoFixture para la integración prueba una aplicación usando Castle Windsor
Lo que me gustaría hacer es tener pruebas que buscan algo como esto:
[Theory]
[Dependency]
public void TestWithDependencies(IThing thing)
{
thing.Hello();
}
para que esto suceda, no puedo hacer lo siguiente:
public sealed class DependencyAttribute : AutoDataAttribute
{
public DependencyAttribute()
: base(new Fixture().Customize(new WindsorCustomization()))
{
}
}
public class WindsorCustomization : ICustomization
{
public WindsorCustomization()
{
// build container here using SUT installers
}
public void Customize(IFixture fixture)
{
fixture.Inject<IThing>(new Thing());
}
}
Hacer esto funciona, pero lo que me gustaría evitar es copiar cada interfaz al mapeo de implementación desde el contenedor de Windsor a la base de ajuste automático.
Welp! Solo eché un vistazo al código de AutoMoq y vi exactamente cómo hacer lo que quiero hacer. Puedo publicar el código en una respuesta si alguien está interesado. – thebeekeeper
Sí, está muy cerca de cómo funciona AutoMoq también :) –