87 lines
4.2 KiB
C#
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);
|
|
});
|
|
}
|
|
}
|