【发布时间】:2016-03-15 01:49:51
【问题描述】:
我正在尝试创建涉及调用我的业务层的单元测试,该业务层又调用我的存储库层。
首先,请看看我是如何使用运行良好的 ASP.NET MVC6 WebApp 进行此操作的:
//Startup.cs of MVC Web App
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddSingleton(_=> Configuration);
services.AddTransient<ICustomerService, CustomerService>();
services.AddTransient<ICustomerRepository, CustomerRepository>();
}
public class CustomersController : Controller
{
private ICustomerService _service;
public CustomersController(ICustomerService service)
{
_service= service;
}
}
public class CustomerService : ICustomerService
{
private ICustomerRepository _repository;
public PriceProtectionManager(ICustomerRepository repository)
{
_repository = repository;
}
}
public class CustomerRepository : BaseRepository, ICustomerRepository
{
public CustomerRepository(IConfigurationRoot config)
: base(config)
{
}
}
public class BaseRepository
{
private IConfigurationRoot _config;
public BaseRepository(IConfigurationRoot config)
{
_config = config;
}
}
考虑到上述内容,请查看我在解决与我的 MVC6 应用程序无关的 XUnit project using a Class Fixture 中的依赖项时遇到的问题。
这是我的 Fixture 类的样子:
public class DatabaseFixture : IDisposable
{
public ICustomerService CustomerService;
public DatabaseFixture()
{
// HOW CAN I RESOLVE DEPENDENCIES HERE USING THE NEW ASP.NET DI
CustomerService = service;
}
public void Dispose()
{
}
}
public class MyTests : IClassFixture<DatabaseFixture>
{
DatabaseFixture fixture;
public MyTests(DatabaseFixture fixture)
{
this.fixture = fixture;
}
[Fact]
public void MyFirstTest()
{
fixture.CustomerRepository.GetAllCustomers();
}
}
当我在测试中运行时,我收到一个错误,即 CustomerService 未解决。我知道为什么会发生这种情况,我只是不知道如何使用内置的 ASP.NET DI 为我的测试解决这些依赖关系,就像 MVC6 应用程序那样。
我相信github post 正是我想要做的。有人对此有解决方案吗?
我相信我想知道的是如何使用新的 ASP.NET 依赖注入在 XUnit Fixture 中连接依赖。
【问题讨论】:
标签: c# asp.net asp.net-core xunit asp.net-core-1.0