【发布时间】:2021-03-08 06:21:32
【问题描述】:
我想为单元测试创建 InMemoryDatabase。
我的 DbContext 派生自 ApiAuthorizationDbContext<ApplicationUser>,我无法在测试代码中实例化我的 DbContext,因为构造函数中缺少 operationalStoreOptions。
我应该怎么做才能为我的上下文创建operationalStoreOptions?
DbContext
public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
public ApplicationDbContext(
DbContextOptions options,
IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions) { }
public virtual DbSet<Assignment> Assignment { get; set; }
public virtual DbSet<Course> Course { get; set; }
...........
// More DbSet and OnModelCreating method
}
我的测试代码
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseInMemoryDatabase(databaseName: "TestDbContext")
.Options;
//ApplicationDbContext needs 2 constructor parameter
using (var _context = new ApplicationDbContext(options))
{
_context.Assignment.Add(new Assignment(1, "Test"));
_context.SaveChanges();
}
【问题讨论】:
-
您需要测试 IdentityServer4 服务吗?如果没有,你可以制作另一个构造函数
标签: c# asp.net-core entity-framework-core asp.net-core-webapi xunit.net