小编Fro*_* He的帖子

如何在 ASP.NET Core 集成测试中覆盖来自其他容器的 DI 注册

我在 asp.net core startup.cs 文件中有以下注册:

    public void ConfigureContainer(ContainerBuilder builder)
    {
       builder.RegisterType<UserService>().As<IUserService>();
    }
Run Code Online (Sandbox Code Playgroud)

这是配置 Autofac 容器。我还有另一个集成测试项目,其中有一个 CustomWebApplicationFactory 类,我正在尝试替换 IUserService 接口的实现。

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureTestServices(services =>
        {
            services.AddSingleton<IUserService, TestUsersService>();
        });
    }
Run Code Online (Sandbox Code Playgroud)

调试测试项目好像不行,IUserService的实现还是UserService。

我尝试使用 ASP.NET Core 内置 IServiceCollection 直接在 Startup.ConfigureServices 方法中注册 UserService 并且它在调试时工作:

services.AddSingleton<IUserService, UserService>();
Run Code Online (Sandbox Code Playgroud)

那么,当我使用 Autofac 作为 IoC 容器并且集成测试项目可以正常工作时,我该如何解决这个问题呢?

c# integration-testing autofac asp.net-core-webapi

6
推荐指数
1
解决办法
3976
查看次数