测试失败:没有注册类型 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' 的服务
Tests fail: No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered
当我 运行 我的 E2E 测试时出现异常:
No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered.
我遵循 the official Autofac documentation 在使用 .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());
}
我做错了什么?
经过长时间的斗争,我终于成功了,这要归功于 this article。
您的应用程序需要以 .NET 3.0+ 方式实现 Autofac,您需要
查看文章中的步骤“在 ASP.NET Core 2.x 中使用 WebApplicationFactory 添加 XUnit 日志记录”和“在 ASP.NET Core 3.0 中使用 WebApplicationFactory”以使测试工作,即添加测试夹具并使用而是创建一个客户端。
当我 运行 我的 E2E 测试时出现异常:
No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered.
我遵循 the official Autofac documentation 在使用 .NET 版本 3+ 的项目中实施 Autofac,我可以 运行 解决方案很好,但我的测试失败了。
奇怪的是,当我使用
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());
}
我做错了什么?
经过长时间的斗争,我终于成功了,这要归功于 this article。
您的应用程序需要以 .NET 3.0+ 方式实现 Autofac,您需要 查看文章中的步骤“在 ASP.NET Core 2.x 中使用 WebApplicationFactory 添加 XUnit 日志记录”和“在 ASP.NET Core 3.0 中使用 WebApplicationFactory”以使测试工作,即添加测试夹具并使用而是创建一个客户端。