Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

102
Visualizações
¿Cómo simular la configuración. GetSection con la sintaxis FakeItEasy?

Tengo la siguiente configuración appsettings.json.

 "SettingsConfig": [ { "Name": "Something", "Node": "Something", "SettingName": "Something" }, { "Name": "Something", "Node": "Something", "SettingName": "Something" }]

Quiero escribir UnitTest, pero la siguiente sintaxis no funciona.

 _configuration = A.Fake<IConfiguration>(); A.CallTo(() => _configuration.GetSection("SettingsConfig")).Returns(new List<SettingsConfig>());

Mensaje de error: IConfigurationSection no contiene una definición para Devoluciones.

¿Cómo se puede simular IConfiguration con la sintaxis FakeItEasy para aplicar datos simulados para UnitTesting?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Primero, debe implementar el método que lee del archivo, que existe en los proyectos de prueba unitaria. Por lo tanto, si no hay un archivo .json que pueda leer, no podrá GetSection en absoluto. Así que agregue el archivo allí y luego aplique:

 private IConfiguration ApplyConfiguration() { var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("settingsConfig.json"); var config = configurationBuilder.Build(); config.GetSection("settingsConfig").Get<List<SettingsConfig>>(); return config; }

Luego, en su lógica de negocios, agregue:

 var config = ApplyConfiguration();

Verá que config contiene toda la configuración allí, por lo que no es necesario llamar a OnCall .Returns() en absoluto.

over 4 years ago · Santiago Trujillo Relatório

0

Si observa el valor de retorno de IConfiguration.GetSection() , verá que espera devolver una IConfigurationSection . Ese es el primer problema aquí.

Más allá de eso, para sacar su Lista de la configuración, necesitaría hacer algo como

 _configuration.GetSection("SettingsConfig").Get<List<SettingsConfig>>();

Desafortunadamente, el método .Get<> en una IConfigurationSection es un método de extensión que FakeItEasy no puede falsificar. Obtendrá el siguiente error:

The current proxy generator can not intercept the method Microsoft.Extensions.Configuration.ConfigurationBinder.Get... - Extension methods can not be intercepted since they're static.

Deberá colocar otra interfaz frente a IConfiguration que envuelve el método de extensión si necesita probarlo.

De lo contrario, para falsificar su archivo de configuración, podría hacer algo como lo siguiente:

 var fakeConfigSection = A.Fake<IConfigurationSection>(); A.CallTo(() => fakeConfigSection["Name"]) .Returns("MyFakedConfigValue"); var fakeConfig = A.Fake<IConfiguration>(); A.CallTo(() => fakeConfig.GetSection("SettingsConfig")) .Returns(fakeConfigSection);
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda