Я пытаюсь выяснить, как я могу использовать инъекцию зависимостей с помощью XUnit. Моя цель - уметь вводить мой ProductRepository в мой тестовый класс.Инъекция зависимостей с XUnit и ASP.NET Core 1.0
Вот код, который я пытаюсь:
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;
}
}
Здесь ошибка: Следующие параметров конструктора не имеют сопоставления данных арматуры (ICustomerRepository хранилища)
Это приводит меня к мысли, что XUnit не поддерживает инъекцию зависимостей, только если это Fixture.
Может ли кто-нибудь дать мне способ получить экземпляр ProductRepository в моем тестовом классе с помощью XUnit? Я считаю, что я правильно запускаю тестовый сервер, поэтому Startup.cs запускает и настраивает DI.
Дэнни, если вы можете загрузить пример GitHub, который был бы удивительным. Я должен признать, что я все еще немного смущен. Допустим, у меня есть IProductRepo и ProductRepo: Можете ли вы привести пример надлежащего способа получить экземпляр ProductRepo с использованием DI, чтобы я мог использовать его в своем тестовом классе? –
Блейк, я обновил свой ответ. Что бы вы сделали, а вместо IPrimeService, вы должны написать IProductRepo, а вместо NegativePrimeService, вы должны написать ProductRepo. Надеюсь, теперь это ясно. –