1 回答
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
我不太清楚杜松子酒是什么,但我想我可以看到你的問題。在您的測(cè)試中,您正在調(diào)用具有 http 偵聽器的 main,這就是您抱怨的行。似乎您認(rèn)為您需要 CTRL + C 才能讓您的應(yīng)用程序作為某種守護(hù)進(jìn)程運(yùn)行,但這是錯(cuò)誤的,您正在做的是提示您的應(yīng)用程序過早結(jié)束,這會(huì)中斷您的測(cè)試并輸出錯(cuò)誤消息。
要回答您的問題,您需要?jiǎng)?chuàng)建一個(gè)測(cè)試套件,您可以在其中運(yùn)行測(cè)試并在這些測(cè)試停止時(shí)選擇它以放下您的 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)在,在為您的端點(diǎn)運(yùn)行測(cè)試時(shí),您將需要發(fā)出模擬 http 請(qǐng)求,有點(diǎn)像真實(shí)用戶。
我將提供一個(gè)通用的小例子。
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()
? ? }
}
讓我知道這是否對(duì)您有幫助。
- 1 回答
- 0 關(guān)注
- 170 瀏覽
添加回答
舉報(bào)
