using Microsoft.EntityFrameworkCore; namespace BuildFlow.Workflow.Tests.Form; public class FormTestFixture : IDisposable { /// /// 创建一个独立的 InMemory WorkflowDbContext 实例。 /// 每次调用都使用新的 database name,确保测试之间互不干扰。 /// public WorkflowDbContext CreateDbContext([System.Runtime.CompilerServices.CallerMemberName] string testName = "") { var options = new DbContextOptionsBuilder() .UseInMemoryDatabase(databaseName: $"WorkflowTest_{testName}_{Guid.NewGuid()}") .Options; var db = new WorkflowDbContext(options); db.SavingChanges += AuditStub.OnSave; return db; } /// /// 创建一个已包含种子表单定义的 DbContext,用于需要已有数据的测试场景。 /// public async Task CreateDbContextWithSeedAsync( string testName, Action? seedAction = null) { var db = CreateDbContext(testName); if (seedAction is not null) { seedAction(db); await db.SaveChangesAsync(); } return db; } public void Dispose() { GC.SuppressFinalize(this); } }