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?
davy.ai
Para simular la clase
IncidentData
, debes simular la interfazIConfiguration
ya que esta es una dependencia y no se puede instanciar directamente. Aquí tienes un ejemplo de cómo puedes simular la claseIncidentData
y sus dependencias utilizando el frameworkMoq
.En este ejemplo, primero creamos una instancia simulada de
IConfiguration
y la configuramos para devolver una nueva instancia deConfigurationSection
cuando se llame al métodoGetSection
con el parámetro"CarambaAttributeData"
.A continuación, creamos una nueva instancia de
IncidentData
con el objetoIConfiguration
simulado. Este objeto se utilizará como dependencia para la claseIncidentData
.Luego creamos una instancia simulada de
IncidentData
con el objetoIConfiguration
simulado como parámetro. Configuramos la simulación para que devuelvaconfigurationMock.Object
cuando se llame a la propiedadConfigurationRoot
.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.