qq_17031883 2024-12-29 21:12 采纳率: 36.4%
浏览 11
已结题

单元测试报错,是要注入服务吗?

单元测试遇到这个问题,是要注入服务吗?在哪里注入?
System.InvalidOperationException : Unable to resolve service for type 'Bayantu.Extensions.Persistence.Dapper.IDapperAsyncExecutor' while attempting to activate 'Bayantu.Evos.Services.Communication.Api.Application.Queries.EmailUnsubscribeQueries'.

img

img

img

  • 写回答

13条回答 默认 最新

  • 阿里嘎多学长 2024-12-29 21:13
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解答

    单元测试中报错是要注入服务吗?答案是肯定的。单元测试中,我们需要注入服务,以便在测试中使用这些服务。

    在 .NET Core 中,我们可以使用 IServiceCollection 注册服务,然后在单元测试中使用 IServiceProvider 注册服务。

    例如:

    // 在 Startup.cs 中注册服务
    services.AddTransient<MyService>();
    
    // 在单元测试中注入服务
    public class MyTest
    {
        private readonly MyService _myService;
    
        public MyTest(MyService myService)
        {
            _myService = myService;
        }
    
        [Fact]
        public void Test()
        {
            // 使用注入的服务
            _myService.DoSomething();
        }
    }
    

    在上面的示例中,我们在 Startup.cs 中注册了 MyService 服务,然后在单元测试中使用构造函数注入 MyService 服务。

    如果你遇到 System.InvalidOperationException : Unable to resolve service for type 'Ba' 错误,可以检查以下几点:

    1. 是否正确地注册了服务?
    2. 是否正确地注入了服务?
    3. 是否正确地使用了服务?

    如果你仍然遇到问题,可以提供更多的代码信息,我将尽力帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月29日
  • 创建了问题 12月29日