.NET 6.0中EfCore.TestSupport的EfInMemory.CreateOptions替代方案是什么?
替代方案说明
EfCore.TestSupport v5.3.0 针对.NET 6+调整了API,原EfInMemory.CreateOptions<TContext>的功能可通过以下两种方式替代:
方式1:使用官方封装的替代方法
这是推荐的简化方案,内置内存数据库配置且自动处理测试隔离,避免测试间数据污染:
using TestSupport.EfHelpers; using Xunit; namespace TestProject1 { [Fact] public async Task GetData_WhenNotExist_ShouldReturnNull() { var options = EfTestHelpers.CreateUniqueClassOptions<ApplicationDbContext>(); // 后续可通过options创建上下文实例: // using var context = new ApplicationDbContext(options); } }
如果需要跨测试类共享数据库(不推荐,易引发测试污染),可改用EfTestHelpers.CreateUniqueDatabaseOptions<ApplicationDbContext>方法。
方式2:手动配置EF Core原生内存数据库
若需精细化控制数据库参数(如指定自定义名称、添加额外配置),可直接使用EF Core原生API:
using Microsoft.EntityFrameworkCore; using System; using Xunit; namespace TestProject1 { [Fact] public async Task GetData_WhenNotExist_ShouldReturnNull() { var options = new DbContextOptionsBuilder<ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "TestDb_" + Guid.NewGuid()) // 生成唯一名称避免测试冲突 .Options; // 后续使用上下文: // using var context = new ApplicationDbContext(options); } }
内容的提问来源于stack exchange,提问作者Mike Bluer
相关产品推荐
相关产品推荐

