Как использовать внедрение конструктора зависимостей XUnit для создания моих конкретных классов - PullRequest
1 голос
/ 05 августа 2020

Я получил пакет xunit.DependencyInjection и создал свою конструкцию с моими интерфейсами. Тестовый пример компилируется, но когда я запускаю xunits, он не выполняет мою инъекцию зависимостей конструктора.

 public class TestSuite{
  IARepository _aRepository;
  IBRepository _bRepository;
    public TestSuite(IARepository aRepository, IBRepository bRepository)
    {
        _aRepository = aRepository;
        _bRepository = bRepository;
    }
}

GitHub предполагает, что инъекция конструктора возможна: https://github.com/pengweiqhca/Xunit.DependencyInjection/tree/master/Xunit.DependencyInjection.Test

Startup.cs

 public class Startup
 {
    public void ConfigureServices(IServiceCollection services)
    {

    var configuration = new ConfigurationBuilder()
            .SetBasePath(System.IO.Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", false, true)
            .Build();

                    
        var connectionString =     configuration.GetConnectionString("A_DbCoreConnectionString");
        services.AddDbContext<AContext>(options1 => options1.UseSqlServer(connectionString));

        connectionString= configuration.GetConnectionString("B_DbCoreConnectionString");
        services.AddDbContext<BContext>(options2 => options2.UseSqlServer(connectionString));

        services.AddTransient<IARepository, ARepository>();
        services.AddTransient<IBRepository, BRepository>();
    }
  }

A и B Repository.cs

public class ARepository :IARepository
{
    public AContext _dbContext; 
    public ARepository(AContext dbContext) 
    {
        _dbContext = dbContext;
    }
    ...
}

public class BRepository :IBRepository
{
    public BContext _dbContext; 
    public BRepository(BContext dbContext) 
    {
        _dbContext = dbContext;
    }
    ...
}

1 Ответ

1 голос
/ 06 августа 2020

Мне удалось заставить инъекцию зависимостей работать в xunit после того, как я добавил код startup.cs

...