Sto cercando di capire come utilizzare l'integrazione delle dipendenze con XUnit. Il mio obiettivo è essere in grado di iniettare il mio ProductRepository nella mia classe di test.Iniezione delle dipendenze con XUnit e ASP.NET Core 1.0
Ecco il codice che sto cercando:
public class DatabaseFixture : IDisposable
{
private readonly TestServer _server;
public DatabaseFixture()
{
_server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());
}
public void Dispose()
{
// ... clean up test data from the database ...
}
}
public class MyTests : IClassFixture<DatabaseFixture>
{
DatabaseFixture _fixture;
public ICustomerRepository _repository { get; set; }
public MyTests(DatabaseFixture fixture, ICustomerRepository repository)
{
_fixture = fixture;
_repository = repository;
}
}
Ecco l'errore: I seguenti parametri del costruttore non avevano corrispondenti dati fixture (repository ICustomerRepository)
Questo mi porta a credere che XUnit non supporta l'iniezione di dipendenza, solo se è un dispositivo.
Qualcuno può darmi un modo per ottenere un'istanza di ProductRepository nella mia classe di test utilizzando XUnit? Credo di aver avviato correttamente un server di test in modo che Startup.cs funzioni e configura il DI.
Danny se è possibile caricare un esempio per GitHub che sarebbe impressionante. Devo ammettere che sono ancora un po 'confuso. Diciamo che ho un IProductRepo e un ProductRepo: puoi darmi un esempio del modo corretto per ottenere un'istanza di ProductRepo usando DI così posso usarlo nella mia classe di test? –
Blake, ho aggiornato la mia risposta. Quello che dovresti fare è, invece di IPrimeService, scrivere IProductRepo e invece di NegativePrimeService, dovresti scrivere ProductRepo. Spero che sia chiaro ora. –