es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clase simulada con un constructor que toma IConfiguration como parámetro.

Quiero simular la clase IncidentData.

La clase con el constructor:

public class IncidentData
{
    public IncidentData(IConfiguration configurationRoot)
    {
        configurationRoot.GetSection("CarambaAttributeData").Bind(this);
    }
}

He intentado configurar una simulación de la siguiente manera:

var incidentDataMock = new Mock<incidentdata>();
incidentDataMock.Setup(x => It.IsAny<iconfiguration>());

Esto me devuelve “System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo”.

¿Debo simular IConfiguration? ¿Cómo lo hago? ¿Cuál es la mejor práctica?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para simular la clase IncidentData, debes simular la interfaz IConfiguration ya que esta es una dependencia y no se puede instanciar directamente. Aquí tienes un ejemplo de cómo puedes simular la clase IncidentData y sus dependencias utilizando el framework Moq.

    // Crea una instancia simulada de IConfiguration
    var configurationMock = new Mock<iconfiguration>();
    configurationMock.Setup(x => x.GetSection("CarambaAttributeData")).Returns(new ConfigurationSection());
    
    // Crea una nueva instancia de IncidentData con la IConfiguration simulada
    var incidentData = new IncidentData(configurationMock.Object);
    
    // Crea una instancia simulada de IncidentData
    var incidentDataMock = new Mock<incidentdata>(configurationMock.Object);
    
    // Verifica que la instancia simulada de IncidentData se creó con éxito
    Assert.NotNull(incidentDataMock.Object);
    
    // Configura la simulación para la dependencia IConfiguration
    incidentDataMock.Setup(x => x.ConfigurationRoot).Returns(configurationMock.Object);
    
    // Utiliza la instancia simulada de IncidentData en tus pruebas
    var result = incidentDataMock.Object.SomeMethod();
    
    // Verifica que el resultado sea correcto
    Assert.AreEqual(expectedResult, result);
    

    En este ejemplo, primero creamos una instancia simulada de IConfiguration y la configuramos para devolver una nueva instancia de ConfigurationSection cuando se llame al método GetSection con el parámetro "CarambaAttributeData".

    A continuación, creamos una nueva instancia de IncidentData con el objeto IConfiguration simulado. Este objeto se utilizará como dependencia para la clase IncidentData.

    Luego creamos una instancia simulada de IncidentData con el objeto IConfiguration simulado como parámetro. Configuramos la simulación para que devuelva configurationMock.Object cuando se llame a la propiedad ConfigurationRoot.

    Por último, utilizamos la instancia simulada de IncidentData en nuestras pruebas y verificamos que los resultados sean correctos.

    Este es un ejemplo básico de cómo simular la clase IncidentData y sus dependencias. La implementación específica dependerá de los requisitos de tu aplicación y de la estructura de tu código.

Comments are closed.