Sto tentando di eseguire quanto segue in un progetto XUnit per ottenere il connectiontring nel database che i miei test dovrebbero utilizzare:Impossibile leggere ConfigurationBuilder da appsettings.json nella libreria di classi xunit in ASP.NET Core 1.0 RC2
public class TestFixture : IDisposable
{
public IConfigurationRoot Configuration { get; set; }
public MyFixture()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public void Dispose()
{
}
}
È molto strano perché funziona perfettamente nei modelli WebAPI e MVC quando viene utilizzato in Startup.cs. Inoltre, questo codice funzionava precedentemente in RC1 con dnx, ma ora che ho aggiornato tutto su RC2 e Core CLI non è più possibile trovare il file appsettings.json
che si trova nella radice della libreria di classi xunit.
Ecco ciò che la mia classe di test assomiglia in modo da poter vedere come sto chiamando per la configurazione:
public class MyTests : IClassFixture<MyFixture>
{
private readonly MyFixture _fixture;
public MyTests(MyFixture fixture)
{
this._fixture = fixture;
}
[Fact]
public void TestCase1()
{
ICarRepository carRepository = new CarRepository(_fixture.Configuration);
}
}
Forse il mio problema è un'altra cosa, perché il mio appsettings.json è all'interno della radice del mio progetto xUnit. L'ho detto nel mio post: "Non è più possibile trovare il file appsettings.json che si trova nella radice della libreria di classi xunit." Da quando sono passato al nuovo modello RC2 ha iniziato a fallire. Quali pacchetti hai installato nel tuo file project.json se non ti dispiace che me lo chieda, in modo da avere la linea di codice che hai incollato. Voglio assicurarmi di usare gli stessi. –
Ho letto delle impostazioni delle opzioni di compilazione nei nuovi documenti xunit ma non mi ero reso conto che doveva essere fatto anche per appsettings.json. Sì, sarebbe eccellente se tu potessi mostrarmi come farlo. –
Grazie! Un'ultima domanda: usi Microsoft.Extensions.Configuration o Microsoft.Extensions.Configuration.Abstractions quando fai riferimento a IConfigurationRoot da una libreria di classi. Entrambi sembrano funzionare. –