本文档介绍了 Caddy 完善的集成测试框架,该框架提供了用于测试服务器配置、HTTP 请求/响应处理以及配置适配的实用工具。该框架主要位于 caddytest 包中,并支持 JSON 和 Caddyfile 两种配置格式。
有关 Caddy 命令行界面测试工具的信息,请参阅命令。有关 Caddyfile 语法和解析的详细信息,请参阅Caddyfile。
该测试框架围绕 Tester 结构体构建,该结构体管理测试服务器实例,并提供配置加载、HTTP 测试和断言的实用工具。
来源:caddytest/caddytest.go1-590
Tester 结构体包含一个 HTTP 客户端,该客户端带有 cookie jar 和自定义传输层,可将所有请求重定向到 localhost,并提供配置管理功能。
该框架通过 Config 结构体支持灵活配置,并提供将 JSON 和 Caddyfile 配置加载到运行中的 Caddy 实例的方法。
来源:caddytest/caddytest.go118-210 caddytest/caddytest.go267-302
| 功能 | 方法 | 描述 |
|---|---|---|
| 服务器初始化 | InitServer() | 加载配置并确保服务器正在运行 |
| 证书路径解析 | prependCaddyFilePath() | 自动解析用于测试的证书路径 |
| 配置验证 | ensureConfigRunning() | 验证加载的配置与预期状态匹配 |
| 错误测试 | AssertLoadError() | 测试无效配置是否产生预期错误 |
该框架提供了一套全面的 HTTP 测试工具,可处理常见的测试场景,包括请求/响应断言、重定向和 Cookie 管理。
来源:caddytest/caddytest.go337-589
该测试框架使用自定义 HTTP 传输层,其功能包括:
127.0.0.1该框架包括用于测试 Caddyfile 到 JSON 配置适配的专用工具,确保 Caddyfile 语法正确转换为 Caddy 的内部 JSON 格式。
来源:caddytest/caddytest.go411-475 caddytest/integration/caddyfile_adapt_test.go16-56 caddyconfig/caddyfile/adapter.go32-64
适配测试系统
caddyfile_adapt/ 目录中的文件加载测试用例---------- 分隔符分割测试文件(Caddyfile 在上,预期 JSON 在下)该框架支持各种类型的集成测试,从基本的 HTTP 功能到复杂的 TLS 和路由场景。
| 测试类型 | 示例文件 | 主要功能 |
|---|---|---|
| 基本 HTTP | caddyfile_test.go | 请求/响应测试,重定向 |
| 配置适配 | caddyfile_adapt_test.go | Caddyfile 到 JSON 转换 |
| TLS/SNI | sni_test.go | 证书处理,SNI 路由 |
| 错误处理 | caddyfile_test.go:696-823 | 错误响应测试 |
来源:caddytest/integration/caddyfile_test.go11-31 caddytest/integration/sni_test.go9-106
该框架通过以下方式自动处理测试证书:
caddy.localhost 域提供默认证书Config 结构体支持自定义证书配置来源:caddytest/caddytest.go55-57 caddytest/caddytest.go327-334 caddytest/caddytest.go269-273
该框架包括用于测试配置错误和验证的工具
AssertLoadError() 验证无效配置是否产生预期的错误消息来源:caddytest/caddytest.go364-371 caddytest/integration/caddyfile_test.go63-73 caddytest/integration/caddyfile_test.go825-850