1 回答

TA貢獻1820條經(jīng)驗 獲得超10個贊
我不太清楚杜松子酒是什么,但我想我可以看到你的問題。在您的測試中,您正在調(diào)用具有 http 偵聽器的 main,這就是您抱怨的行。似乎您認為您需要 CTRL + C 才能讓您的應(yīng)用程序作為某種守護進程運行,但這是錯誤的,您正在做的是提示您的應(yīng)用程序過早結(jié)束,這會中斷您的測試并輸出錯誤消息。
要回答您的問題,您需要創(chuàng)建一個測試套件,您可以在其中運行測試并在這些測試停止時選擇它以放下您的 http 服務(wù)器。
func TestMain(m *testing.M) {
? ? /*set up your router or?
? ? ? ? database connections or
? ? ? ? anything else you'll need
? ? */
? ? exitCode := m.Run()
? ? os.Exit(exitCode)
}
現(xiàn)在,在為您的端點運行測試時,您將需要發(fā)出模擬 http 請求,有點像真實用戶。
我將提供一個通用的小例子。
func ATest(t* testing.T){? ??
? ? req, _ := http.NewRequest("GET", "/route", nil)
? ? responseRecorder = httptest.NewRecorder()
? ? router.ServeHTTP(responseRecorder, req)
? ? if (http.StatusOk != responseRecorder.Code){
? ? ? ? t.Fail()
? ? }
}
讓我知道這是否對您有幫助。
- 1 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報