用途:为 ABP Framework API 编写端到端集成测试,使用 xUnit 与 WebApplicationFactory 发起真实 HTTP 请求验证接口行为。适用场景包括:测试 API 端点的端到端流程、验证授权与认证、验证请求/响应序列化、端到端流程校验、数据库集成测试。
主要能力与用法:
- 测试项目结构:test/ 下建立 [Module].HttpApi.Tests,包含测试基类、测试模块、Controllers 测试目录和 TestData。
- 测试基类:继承 AbpIntegratedTest<ClinicHttpApiTestModule>,通过 WebApplicationFactory<Program> 创建 HttpClient,可用 WithWebHostBuilder 替换数据库为内存库(RemoveAll<DbContextOptions<ClinicDbContext>> 后 AddDbContext 使用 UseInMemoryDatabase)。提供 AuthenticateAsAsync 设置 Bearer 令牌,以及 GetAsync<T>、PostAsync<T> 等辅助方法。
- 测试模块:用 [DependsOn(typeof(ClinicHttpApiModule), typeof(AbpAspNetCoreTestBaseModule))] 标注,并在 ConfigureServices 中注册测试专用服务。
- 常见测试模式:CRUD 端点测试(GetList 分页/过滤、Get 存在与 404、Create 返回 201 与 Location、必填校验 400、重复 409、Update 200/404、Delete 204 及软删除后 404);授权测试(无权限 403、有权限 201、未认证 401、Theory 覆盖不同权限组合);响应格式测试(验证错误码 Volo.Abp.Validation:ValidationError、EntityNotFound、分页结构 totalCount/items);文件上传测试(MultipartFormDataContent,超大文件返回 400)。
- 测试数据:通过 TestData 静态类定义固定 ID 与邮箱,用 TestDataSeeder 实现 IDataSeedContributor 预置数据。
- 状态码速查:200 成功、201 创建、204 删除成功、400 校验错误、401 未认证、403 无权限、404 未找到、409 冲突。
限制:资料仅覆盖 ABP Framework 与 xUnit/WebApplicationFactory 相关模式,具体安装命令、依赖版本、收费信息暂未提供;示例基于 Clinic/Patient 领域,需按实际项目替换命名空间与类型。