Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

103
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!