如何解决单元测试 - 模拟服务和存储库/工作单元层
在我当前的实现中,我使用域服务层通过工作单元注入存储库。
在某些情况下,我会将其他服务注入到我的服务中。
但是,在进行单元测试时,我发现 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
类时,我需要模拟 TestService
和 OptionService
以及它们的依赖项。
你能帮我考虑一下我正在实施的这个架构吗?
解决方法
你可以试试下面的代码。我希望它有所帮助。
您可以注入所有服务和存储库。
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 举报,一经查实,本站将立刻删除。