微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单元测试 - 模拟服务和存储库/工作单元层

如何解决单元测试 - 模拟服务和存储库/工作单元层

在我当前的实现中,我使用域服务层通过工作单元注入存储库。

在某些情况下,我会将其他服务注入到我的服务中。

但是,在进行单元测试时,我发现 Mock 这些对象很困难,因为每当 Service 类注入与其他服务的依赖项时,我都需要模拟该其他服务的依赖项。

如何让它以简单的方式工作?

我是否错误地使用了图层?

例如:

public class ValueService : IValueService
    {
        private readonly ITestService _testService;
        private readonly IOptionService _optionService;


        public ValueService (IUnitOfWork unitOfWork,ITestService testService,IOptionService optionService) : base(unitOfWork)
        {
            _testService = testService;
            _optionService = optionService;
        }

当我要模拟 ValueService 类时,我需要模拟 TestServiceOptionService 以及它们的依赖项。

你能帮我考虑一下我正在实施的这个架构吗?

解决方法

你可以试试下面的代码。我希望它有所帮助。

您可以注入所有服务和存储库。

public class ValueServiceTest
{
   private readonly IValueService _valueService;

   public ValueServiceTest()
   {
       _valueService = GetService();
   }

   ***********************
   Your test methods.
   ***********************

   private ValueService GetService()
   {
       var services = new ServiceCollection();
       
       services.AddScoped<IUnitOfWork,UnitOfWork>();
       services.AddScoped<IValueService,ValueService>();
       services.AddScoped<ITestService,TestService>();
       services.AddScoped<IOptionService,OptionService >();
       
       **********************************
       You can inject repositories here. 
       **********************************

       var serviceProvider = services.BuildServiceProvider();

       return serviceProvider.GetService<IValueService>();
   }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。