Documentation
¶
Index ¶
- func SetupTestDB(t *testing.T, models ...interface{}) (*gorm.DB, func())
- type CLITestContext
- type CLITestOptions
- type DBHelper
- func (h *DBHelper) Count(tableName string) (int64, error)
- func (h *DBHelper) CountWhere(tableName string, where string, args ...interface{}) (int64, error)
- func (h *DBHelper) DeleteAll(tableName string) error
- func (h *DBHelper) Exists(tableName string, where string, args ...interface{}) (bool, error)
- func (h *DBHelper) FindAll(dest interface{}, tableName string) error
- func (h *DBHelper) FindOne(dest interface{}, where string, args ...interface{}) error
- func (h *DBHelper) Seed(data interface{}) error
- func (h *DBHelper) SeedMultiple(data interface{}) error
- func (h *DBHelper) TruncateTable(tableName string) error
- func (h *DBHelper) TruncateTables(tableNames ...string) error
- type RequestBuilder
- func (rb *RequestBuilder) Do(engine *gin.Engine) *ResponseHelper
- func (rb *RequestBuilder) WithHeader(key, value string) *RequestBuilder
- func (rb *RequestBuilder) WithJSON(body interface{}) *RequestBuilder
- func (rb *RequestBuilder) WithQuery(key, value string) *RequestBuilder
- func (rb *RequestBuilder) WithTraceID(traceID string) *RequestBuilder
- type ResponseHelper
- type TestApp
- type TestServer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CLITestContext ¶
CLITestContext CLI 测试上下文 封装 CLI 测试所需的基础组件
func MustNewCLITestContext ¶
func MustNewCLITestContext(t *testing.T, opts CLITestOptions) (*CLITestContext, func())
MustNewCLITestContext 创建 CLI 测试上下文(失败时 fatal)
func NewCLITestContext ¶
func NewCLITestContext(t *testing.T, opts CLITestOptions) (*CLITestContext, func())
NewCLITestContext 创建 CLI 测试上下文(一站式初始化)
使用方式:
func TestMain(m *testing.M) {
// 1. 创建测试上下文(自动完成所有初始化)
ctx, cleanup := testutil.NewCLITestContext(t, testutil.CLITestOptions{
AutoMigrate: []interface{}{&model.User{}},
})
defer cleanup()
// 2. 使用 DBManager 创建 Service
userRepo := user.NewRepositoryImpl(ctx.DBManager.DB("master"))
userService := user.NewService(userRepo)
// 3. 运行测试
code := m.Run()
os.Exit(code)
}
优势:
- 自动创建 Logger、DBManager、AutoMigrate
- 默认使用 SQLite 内存数据库(快速、隔离)
- 提供 cleanup 函数自动清理资源
type CLITestOptions ¶
type CLITestOptions struct {
// AutoMigrate 自动迁移的模型列表
AutoMigrate []interface{}
// DBConfig 自定义数据库配置(可选,默认使用 SQLite 内存数据库)
DBConfig map[string]database.Config
// Logger 自定义 Logger(可选,默认使用 Development Logger)
Logger *zap.Logger
// SetupFunc 自定义初始化函数(可选,在基础初始化完成后调用)
// 用于创建业务层的 Service、Handler 等
SetupFunc func(*CLITestContext) error
}
CLITestOptions CLI 测试选项
type DBHelper ¶
DBHelper 数据库测试辅助工具
func (*DBHelper) CountWhere ¶
CountWhere 统计符合条件的记录数
func (*DBHelper) SeedMultiple ¶
SeedMultiple 批量插入种子数据
func (*DBHelper) TruncateTable ¶
TruncateTable 清空表数据(保留自增ID)
func (*DBHelper) TruncateTables ¶
TruncateTables 清空多个表
type RequestBuilder ¶
type RequestBuilder struct {
// contains filtered or unexported fields
}
RequestBuilder HTTP 请求构建器
func (*RequestBuilder) Do ¶
func (rb *RequestBuilder) Do(engine *gin.Engine) *ResponseHelper
Do 执行请求
func (*RequestBuilder) WithHeader ¶
func (rb *RequestBuilder) WithHeader(key, value string) *RequestBuilder
WithHeader 设置 Header
func (*RequestBuilder) WithJSON ¶
func (rb *RequestBuilder) WithJSON(body interface{}) *RequestBuilder
WithJSON 设置 JSON Body
func (*RequestBuilder) WithQuery ¶
func (rb *RequestBuilder) WithQuery(key, value string) *RequestBuilder
WithQuery 设置 Query 参数
func (*RequestBuilder) WithTraceID ¶
func (rb *RequestBuilder) WithTraceID(traceID string) *RequestBuilder
WithTraceID 设置 TraceID
type ResponseHelper ¶
type ResponseHelper struct {
Recorder *httptest.ResponseRecorder
}
ResponseHelper 响应辅助工具
func (*ResponseHelper) Header ¶
func (rh *ResponseHelper) Header(key string) string
Header 获取响应 Header
type TestApp ¶
type TestApp interface {
// RunNonBlocking 非阻塞启动应用(完整启动但不等待关闭信号)
RunNonBlocking() error
// GetHTTPServer 获取 HTTP Server(用于测试)
GetHTTPServer() interface {
GetEngine() *gin.Engine
}
// GetDBManager 获取数据库管理器
GetDBManager() *database.Manager
// GetRedisManager 获取 Redis 管理器
GetRedisManager() *redis.Manager
// Shutdown 关闭应用
Shutdown()
}
TestApp 测试应用接口 任何实现了这个接口的应用都可以用于测试
type TestServer ¶
TestServer 测试服务器 封装完整的应用实例,用于集成测试
func MustNewTestServer ¶
func MustNewTestServer(t *testing.T, app TestApp) *TestServer
MustNewTestServer 创建测试服务器(失败时 panic)
func NewTestServer ¶
func NewTestServer(app TestApp) (*TestServer, error)
NewTestServer 创建测试服务器(优雅版本)
使用方式:
// 1. 创建应用实例 userApp := app.NewWithConfig(configPath) // 2. 注册组件和回调 userApp.RegisterComponents(...) userApp.SetupCallbacks(...) // 3. 创建测试服务器(自动调用 RunNonBlocking) server, err := testutil.NewTestServer(userApp)
优势:
- 复用 Application.Run() 的完整逻辑
- 测试环境和生产环境启动流程完全一致
- 代码简洁,易于维护
Click to show internal directories.
Click to hide internal directories.