Files
quyun-v2/backend/tests/setup_test.go
2025-12-15 17:55:32 +08:00

165 lines
3.6 KiB
Go

//go:build legacytests
// +build legacytests
package tests
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
// TestMain 测试入口点
func TestMain(m *testing.M) {
// 运行测试
m.Run()
}
// TestSetup 测试基础设置
func TestSetup(t *testing.T) {
Convey("测试基础设置", t, func() {
Convey("当初始化测试环境时", func() {
// 初始化测试环境
testEnv := &TestEnvironment{
Name: "test-env",
Version: "1.0.0",
}
Convey("那么测试环境应该被正确创建", func() {
So(testEnv.Name, ShouldEqual, "test-env")
So(testEnv.Version, ShouldEqual, "1.0.0")
})
})
})
}
// TestEnvironment 测试环境结构
type TestEnvironment struct {
Name string
Version string
Config map[string]interface{}
}
// NewTestEnvironment 创建新的测试环境
func NewTestEnvironment(name string) *TestEnvironment {
return &TestEnvironment{
Name: name,
Config: make(map[string]interface{}),
}
}
// WithConfig 设置配置
func (e *TestEnvironment) WithConfig(key string, value interface{}) *TestEnvironment {
e.Config[key] = value
return e
}
// GetConfig 获取配置
func (e *TestEnvironment) GetConfig(key string) interface{} {
return e.Config[key]
}
// Setup 设置测试环境
func (e *TestEnvironment) Setup() *TestEnvironment {
// 初始化测试环境
e.Config["initialized"] = true
return e
}
// Cleanup 清理测试环境
func (e *TestEnvironment) Cleanup() {
// 清理测试环境
e.Config = make(map[string]interface{})
}
// TestEnvironmentManagement 测试环境管理
func TestEnvironmentManagement(t *testing.T) {
Convey("测试环境管理", t, func() {
var env *TestEnvironment
Convey("当创建新测试环境时", func() {
env = NewTestEnvironment("test-app")
Convey("那么环境应该有正确的名称", func() {
So(env.Name, ShouldEqual, "test-app")
So(env.Version, ShouldBeEmpty)
So(env.Config, ShouldNotBeNil)
})
})
Convey("当设置配置时", func() {
env.WithConfig("debug", true)
env.WithConfig("port", 8080)
Convey("那么配置应该被正确设置", func() {
So(env.GetConfig("debug"), ShouldEqual, true)
So(env.GetConfig("port"), ShouldEqual, 8080)
})
})
Convey("当初始化环境时", func() {
env.Setup()
Convey("那么环境应该被标记为已初始化", func() {
So(env.GetConfig("initialized"), ShouldEqual, true)
})
})
Reset(func() {
if env != nil {
env.Cleanup()
}
})
})
}
// TestConveyBasicUsage 测试 Convey 基础用法
func TestConveyBasicUsage(t *testing.T) {
Convey("Convey 基础用法测试", t, func() {
Convey("数字操作", func() {
num := 42
Convey("应该能够进行基本比较", func() {
So(num, ShouldEqual, 42)
So(num, ShouldBeGreaterThan, 0)
So(num, ShouldBeLessThan, 100)
})
})
Convey("字符串操作", func() {
str := "hello world"
Convey("应该能够进行字符串比较", func() {
So(str, ShouldEqual, "hello world")
So(str, ShouldContainSubstring, "hello")
So(str, ShouldStartWith, "hello")
So(str, ShouldEndWith, "world")
})
})
Convey("切片操作", func() {
slice := []int{1, 2, 3, 4, 5}
Convey("应该能够进行切片操作", func() {
So(slice, ShouldHaveLength, 5)
So(slice, ShouldContain, 3)
So(slice, ShouldNotContain, 6)
})
})
Convey("Map 操作", func() {
m := map[string]interface{}{
"name": "test",
"value": 123,
}
Convey("应该能够进行 Map 操作", func() {
So(m, ShouldContainKey, "name")
So(m, ShouldContainKey, "value")
So(m["name"], ShouldEqual, "test")
So(m["value"], ShouldEqual, 123)
})
})
})
}