摘要:先不提本庫(kù),給個(gè)用庫(kù)寫通用測(cè)試的方法來源很簡(jiǎn)單,測(cè)試一個(gè)方法至少要那么多行代碼,還只是簡(jiǎn)單的請(qǐng)求,至于請(qǐng)求是否加參數(shù),加什么參數(shù),就成了另一個(gè)更大的問題。操作要在后,初始化操作要在之前。
先不提本庫(kù),給個(gè)用net/http/httptest庫(kù)寫通用handler測(cè)試的方法(來源):
package handlers import ( "net/http" "net/http/httptest" "testing" ) func TestHealthCheckHandler(t *testing.T) { // Create a request to pass to our handler. We don"t have any query parameters for now, so we"ll // pass "nil" as the third parameter. req, err := http.NewRequest("GET", "/health-check", nil) if err != nil { t.Fatal(err) } // We create a ResponseRecorder (which satisfies http.ResponseWriter) to record the response. rr := httptest.NewRecorder() handler := http.HandlerFunc(HealthCheckHandler) // Our handlers satisfy http.Handler, so we can call their ServeHTTP method // directly and pass in our Request and ResponseRecorder. handler.ServeHTTP(rr, req) // Check the status code is what we expect. if status := rr.Code; status != http.StatusOK { t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK) } // Check the response body is what we expect. expected := `{"alive": true}` if rr.Body.String() != expected { t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected) } }
很簡(jiǎn)單,測(cè)試一個(gè)方法至少要那么多行代碼,還只是簡(jiǎn)單的get請(qǐng)求,至于請(qǐng)求是否加參數(shù),加什么參數(shù),就成了另一個(gè)更大的問題。
本庫(kù)用法//一個(gè)永遠(yuǎn)返回400的測(cè)試handler func badHandler(w http.ResponseWriter, r *http.Request) { http.Error(w, "not a regular name or password", http.StatusBadRequest) } //測(cè)試這個(gè)handler是否返回400 New("/bad", badHandler, t).Do().CheckCode(http.StatusBadRequest) //測(cè)試他是不是返回200(當(dāng)然會(huì)測(cè)試失敗) New("/ok", badHandler, t).Do().CheckCode(http.StatusOK) //帶著header測(cè)試 New("/", badHandler, t).Post().AddParams("name", "value1").AddParams("nam22", "value3").Do() //帶著cookie測(cè)試,并且判斷結(jié)果是否包含字符串。 New("/", cookieHandler, t).Get().AddCookies(cookie).Do().BodyContains("testcookievalue") //獲取 *http.ResponseRecorder, 然后自己測(cè)試 rr = New("/dump", headerHandler, t).Post().AddParams("name", "value1").Do().ResponseRecorder() //給請(qǐng)求加參數(shù),不寫默認(rèn)是GET請(qǐng)求 New("/ok", badHandler, t).AddParams("a", "aa").AddParams("b", "bb").Do().CheckCode(http.StatusOK) //http basic auth: New("/bad", badHandler, t).SetBasicAuth(username, password).Do().CheckCode(http.StatusBadRequest) //自己定制 http.Request: New("/bad", badHandler, t).SetRequest(req).Do().CheckCode(http.StatusBadRequest) //And more in test file and source code.
必須有 .Do(),才能進(jìn)行請(qǐng)求,不然不會(huì)請(qǐng)求。
Check操作要在.Do()后,初始化操作要在.Do()之前。
庫(kù)地址:https://github.com/qiuker521/...
后續(xù)會(huì)增加json測(cè)試功能。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/8767.html
摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢(shì)而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡(jiǎn)化異步編程的還是,在端,建議考慮。 本篇,簡(jiǎn)單實(shí)現(xiàn)一個(gè)promise,主要普及promise的用法。 一直以來,JavaScript處理異步都是以callback的方式,在前端開發(fā)領(lǐng)域callback機(jī)制...
摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢(shì)而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡(jiǎn)化異步編程的還是,在端,建議考慮。 前段時(shí)間頻頻看到Promise這個(gè)詞,今天發(fā)現(xiàn)騰訊AlloyTeam寫得這篇很贊,遂轉(zhuǎn)之。 原文鏈接 本篇,主要普及promise的用法。 一直以來,JavaScrip...
摘要:有漏洞的服務(wù)器源碼下載鏈接通過補(bǔ)丁的修改進(jìn)行漏洞成因的逆向分析。我們編寫了的程序,同時(shí)發(fā)起多個(gè)畸形請(qǐng)求,以不斷觸發(fā)后臺(tái)崩潰,并讓服務(wù)器不斷陷入重新分配的處理之中。 一、實(shí)驗(yàn)原理介紹 apache在其網(wǎng)站發(fā)布的安全公告,針對(duì)CVE-2017-7659漏洞的介紹是這樣的: A maliciously constructed HTTP/2 request could cause mod_ht...
摘要:的踩坑實(shí)踐無法格式化引言最近開發(fā)的前端項(xiàng)目隨著開發(fā)的人員越來越多,代碼規(guī)范已經(jīng)是一個(gè)很難避免的問題了,雖然百度有這個(gè)規(guī)則檢查,但是不論是或者是項(xiàng)目本地都沒有配置或檢查,完全靠自覺,這是件非常扯淡的事。 vscode-eslint的踩坑實(shí)踐--typescript無法格式化 引言 最近開發(fā)的前端項(xiàng)目隨著開發(fā)的人員越來越多,代碼規(guī)范已經(jīng)是一個(gè)很難避免的問題了,雖然百度有fecs這個(gè)規(guī)則檢查...
閱讀 1155·2023-04-25 17:28
閱讀 3531·2021-10-14 09:43
閱讀 3954·2021-10-09 10:02
閱讀 1942·2019-08-30 14:04
閱讀 3128·2019-08-30 13:09
閱讀 3269·2019-08-30 12:53
閱讀 2896·2019-08-29 17:11
閱讀 1822·2019-08-29 16:58