unit-testing Inyección de propiedad


Ejemplo

La inyección de propiedad permite que las clases dependientes se actualicen después de que se haya creado. Esto puede ser útil si desea simplificar la creación de objetos, pero aún así permitir que las dependencias sean anuladas por sus pruebas con pruebas dobles.

Considere una clase que necesita escribir en un archivo de registro en una condición de error. La clase sabe cómo construir un Logger predeterminado, pero permite anularlo mediante la inyección de propiedades. Sin embargo, vale la pena señalar que al usar la inyección de propiedades de esta manera, está ILogger esta clase con una implementación exacta de ILogger que es ConcreteLogger en este ejemplo dado. Una posible solución podría ser una fábrica que devuelva la implementación necesaria de ILogger.

public class RecordProcessor
{
    public RecordProcessor()
    {
        Logger = new ConcreteLogger();
    }

    public ILogger Logger { get; set; }

    public void DoSomeProcessing()
    {
        // ...
        _logger.Log("Complete");
    }
}

En la mayoría de los casos, la inyección de constructor es preferible a la inyección de propiedad porque brinda mejores garantías sobre el estado del objeto inmediatamente después de su construcción.