测试失败:尚未注册类型 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBu



当我运行E2E测试时,我得到了异常:

No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered.

我遵循了官方的Autofac文档,在使用.NET版本3+的项目中实现了Autofac,我可以很好地运行该解决方案,但我的测试失败了。

奇怪的是,当我使用本主题中的解决方案代码时,情况正好相反——我无法运行解决方案(返回的IServiceProvider无效(,但我的测试成功了:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc(options => options.EnableEndpointRouting = false)
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddCustomDbContext(Configuration);
services.AddOptions();
var container = new ContainerBuilder();
container.Populate(services);
return new AutofacServiceProvider(container.Build());
}

我做错了什么?

经过一场漫长的战斗,我终于让它发挥了作用,这一切都要归功于这篇文章。

您的应用程序需要以.NET 3.0+的方式实现Autofac,并且您需要看台阶";在ASP.NET Core 2.x中添加具有WebApplicationFactory的XUnit日志记录";以及";在ASP.NET Core 3.0中使用WebApplicationFactory";让测试工作,即添加测试夹具并使用它来创建客户端。

最新更新