using BuildFlow.Shared.Domain.Common; using Microsoft.EntityFrameworkCore; using Scripting.Infrastructure.Persistence; namespace BuildFlow.Scripting.Tests; /// /// InMemory ScriptingDbContext 工厂(镜像 Workflow.Tests.TestDbFactory)。 /// 传入测试用 ICurrentUserContext,让 ScriptingDbContext.OnConfiguring 注册 AuditInterceptor, /// 自动填充审计字段(CreatedBy/UpdatedBy/OperatorIP 等),与生产行为一致。 /// public static class ScriptingTestDbFactory { private sealed class TestCurrentUserContext : ICurrentUserContext { public string UserId => "test-user"; public string IPAddress => "127.0.0.1"; } public static ScriptingDbContext Create(ICurrentUserContext? currentUser = null) { var options = new DbContextOptionsBuilder() .UseInMemoryDatabase($"scripting-test-{Guid.NewGuid()}") .Options; // 用 2 参构造激活 AuditInterceptor,保证 ScriptExecutionLog 等实体的审计字段被自动填充 return new ScriptingDbContext(options, currentUser ?? new TestCurrentUserContext()); } }