xiangyixiangqin/server/tests/XiangYi.Api.Tests/AdminApi/AdminApiWebApplicationFactory.cs
2026-01-02 18:00:49 +08:00

87 lines
4.2 KiB
C#

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;
/// <summary>
/// 后台管理API集成测试工厂
/// </summary>
public class AdminApiWebApplicationFactory : WebApplicationFactory<IAdminApiMarker>
{
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<string, string?>
{
["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<IAdminAuthService>();
MockAdminUserService = Substitute.For<IAdminUserService>();
MockAdminOrderService = Substitute.For<IAdminOrderService>();
MockAdminMemberService = Substitute.For<IAdminMemberService>();
MockAdminProfileAuditService = Substitute.For<IAdminProfileAuditService>();
MockAdminReportService = Substitute.For<IAdminReportService>();
MockAdminBannerService = Substitute.For<IAdminBannerService>();
MockAdminAccountService = Substitute.For<IAdminAccountService>();
MockAdminRoleService = Substitute.For<IAdminRoleService>();
MockAdminMenuService = Substitute.For<IAdminMenuService>();
MockAdminLogService = Substitute.For<IAdminLogService>();
// 替换服务
services.RemoveAll<IAdminAuthService>();
services.RemoveAll<IAdminUserService>();
services.RemoveAll<IAdminOrderService>();
services.RemoveAll<IAdminMemberService>();
services.RemoveAll<IAdminProfileAuditService>();
services.RemoveAll<IAdminReportService>();
services.RemoveAll<IAdminBannerService>();
services.RemoveAll<IAdminAccountService>();
services.RemoveAll<IAdminRoleService>();
services.RemoveAll<IAdminMenuService>();
services.RemoveAll<IAdminLogService>();
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);
});
}
}