基于asp.net core项目构建单元测试
做这个笔记的缘由:
在webapi学习项目中想对项目服务层进行测试,但是webapi项目的DbContext是由Startup中配置依赖注入的,服务层再由构造函数依赖注入获得DbContext。
在单元测试项目中要对服务层进行测试就必须要自己创建并配置DbContext服务注入到测试项目中。
- 需要NuGet添加与webapi项目相同的ef core数据库提供程序
- 添加并配置DbContext服务
public class DbFixture { public DbFixture() { var serviceCollection = new ServiceCollection(); serviceCollection.AddDbContext<AppDbContext>(option => { option.UseMySql("server=localhost; database=ShopDB; uid=root; pwd=123456;", ServerVersion.AutoDetect("server=localhost; database=ShopDB; uid=root; pwd=123456;")); }); AppDbContext = serviceCollection.BuildServiceProvider().GetService<AppDbContext>(); } public AppDbContext AppDbContext { get; private set; } }
- 在单元测试项目测试类中通过构造函数注入DbContext并实例化服务类就可以对服务类进行测试了
public class TenantRepositoryTest : TestBase, IClassFixture<DbFixture> { private ITenantRepository _tenantRepository; public TenantRepositoryTest(ITestOutputHelper output, DbFixture fixture) : base(output) { _tenantRepository = new TenantRepository(fixture.AppDbContext); } [Fact] public void GetMaxCode() { Output.WriteLine(_tenantRepository.GetMaxCode().ToString()); } }
本文来自博客园,作者:weichangk,转载请注明原文链接:https://www.cnblogs.com/weichangk/p/15496639.html