using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using NSubstitute; using XiangYi.AdminApi; using XiangYi.Application.Interfaces; namespace XiangYi.Api.Tests.AdminApi; /// /// 后台管理API集成测试工厂 /// public class AdminApiWebApplicationFactory : WebApplicationFactory { public IAdminAuthService MockAdminAuthService { get; private set; } = null!; public IAdminUserService MockAdminUserService { get; private set; } = null!; public IAdminOrderService MockAdminOrderService { get; private set; } = null!; public IAdminMemberService MockAdminMemberService { get; private set; } = null!; public IAdminProfileAuditService MockAdminProfileAuditService { get; private set; } = null!; public IAdminReportService MockAdminReportService { get; private set; } = null!; public IAdminBannerService MockAdminBannerService { get; private set; } = null!; public IAdminAccountService MockAdminAccountService { get; private set; } = null!; public IAdminRoleService MockAdminRoleService { get; private set; } = null!; public IAdminMenuService MockAdminMenuService { get; private set; } = null!; public IAdminLogService MockAdminLogService { get; private set; } = null!; protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.UseEnvironment("Testing"); // 禁用Hangfire builder.ConfigureAppConfiguration((context, config) => { config.AddInMemoryCollection(new Dictionary { ["Hangfire:Enabled"] = "false", ["ConnectionStrings:AdminDb"] = "Server=.;Database=TestDb;Trusted_Connection=True;", ["ConnectionStrings:BizDb"] = "Server=.;Database=TestDb;Trusted_Connection=True;", ["ConnectionStrings:HangfireDb"] = "Server=.;Database=TestDb;Trusted_Connection=True;" }); }); builder.ConfigureServices(services => { // 创建Mock服务 MockAdminAuthService = Substitute.For(); MockAdminUserService = Substitute.For(); MockAdminOrderService = Substitute.For(); MockAdminMemberService = Substitute.For(); MockAdminProfileAuditService = Substitute.For(); MockAdminReportService = Substitute.For(); MockAdminBannerService = Substitute.For(); MockAdminAccountService = Substitute.For(); MockAdminRoleService = Substitute.For(); MockAdminMenuService = Substitute.For(); MockAdminLogService = Substitute.For(); // 替换服务 services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.RemoveAll(); services.AddSingleton(MockAdminAuthService); services.AddSingleton(MockAdminUserService); services.AddSingleton(MockAdminOrderService); services.AddSingleton(MockAdminMemberService); services.AddSingleton(MockAdminProfileAuditService); services.AddSingleton(MockAdminReportService); services.AddSingleton(MockAdminBannerService); services.AddSingleton(MockAdminAccountService); services.AddSingleton(MockAdminRoleService); services.AddSingleton(MockAdminMenuService); services.AddSingleton(MockAdminLogService); }); } }