feat(testing): Listener 链式入口并精简测试文档运行指引
将 connect listener 并入 Test 链、删除 NewTestApp,正文只示范 -run 单测,全量命令仅保留在文末 CI 节。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -23,6 +23,9 @@ var testApp *TestApp
|
||||
func TestMain(m *testing.M) {
|
||||
testApp = Test("config/config.json").
|
||||
WorkDir("..").
|
||||
Listener(func(ctx *Context) bool {
|
||||
return false // 空实现:继续进控制器;需要鉴权/拦截时在此写
|
||||
}).
|
||||
Swagger("My API", "1.0.0").
|
||||
Proj(TestProj{
|
||||
"app": {
|
||||
@@ -42,6 +45,37 @@ func TestApi(t *testing.T) {
|
||||
testApp.RunTests(t)
|
||||
}
|
||||
|
||||
// TestListenerChain 验证链式 Listener 在请求路径上被调用。
|
||||
// 注意:TestMain 已 Chdir 到 example/,此处不再 WorkDir。
|
||||
func TestListenerChain(t *testing.T) {
|
||||
hit := false
|
||||
app := Test("config/config.json").
|
||||
Listener(func(ctx *Context) bool {
|
||||
hit = true
|
||||
return false
|
||||
}).
|
||||
Proj(TestProj{
|
||||
"app": {
|
||||
Proj: Project,
|
||||
Tests: ProjTest{
|
||||
"expect_demo": CtrTest{
|
||||
"string_result": {Desc: "触发 listener", Func: func(a *Api) {
|
||||
ExpectDemoTest["string_result"].Func(a)
|
||||
}},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
SetupDatabase(&app.Db)
|
||||
app.RunTests(t)
|
||||
|
||||
if !hit {
|
||||
t.Fatal("Listener 未被调用")
|
||||
}
|
||||
_ = app.Db.RollbackTestTx()
|
||||
}
|
||||
|
||||
// TestInterruptStop 模拟提前中断:string_result 跑完后 RequestStop,zzz_should_skip 应 Skip;
|
||||
// swagger 中 string_result 的 cases 应保留。注意:TestMain 已 Chdir 到 example/,此处不再 WorkDir。
|
||||
func TestInterruptStop(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user