1 回答
TA贡献1770条经验 获得超3个赞
您可以用来WebHostBuilder.ConfigureTestServices
调整集成测试服务器使用的服务配置。这样,您可以重新配置数据库上下文以使用不同的配置。文档的集成测试章节也涵盖了这一点。
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
// …
builder.ConfigureTestServices(services =>
{
// remove the existing context configuration
var descriptor = services.SingleOrDefault(d => d.ServiceType == typeof(DbContextOptions<ApplicationDbContext>));
if (descriptor != null)
services.Remove(descriptor);
services.AddDbContext<ApplicationDbContext>(options =>
options.UseInMemoryDatabase("TestDB"));
});
}
传递给的配置ConfigureTestServices将始终在 后运行,因此Startup.ConfigureServices您可以使用它来覆盖集成测试的实际服务。
对于大多数情况,只需在现有注册上注册其他类型即可使其适用于所有地方。除非您实际上检索单一类型的多个服务(通过注入IEnumerable<T>某处),否则这不会产生负面影响。
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报