成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

不扯淡,一個簡化后的httptest庫

godlong_X / 738人閱讀

摘要:先不提本庫,給個用庫寫通用測試的方法來源很簡單,測試一個方法至少要那么多行代碼,還只是簡單的請求,至于請求是否加參數(shù),加什么參數(shù),就成了另一個更大的問題。操作要在后,初始化操作要在之前。

先不提本庫,給個用net/http/httptest庫寫通用handler測試的方法(來源):

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)
    }
}

很簡單,測試一個方法至少要那么多行代碼,還只是簡單的get請求,至于請求是否加參數(shù),加什么參數(shù),就成了另一個更大的問題。

本庫用法
//一個永遠返回400的測試handler
func badHandler(w http.ResponseWriter, r *http.Request) {
    http.Error(w, "not a regular name or password", http.StatusBadRequest)
}

//測試這個handler是否返回400
New("/bad", badHandler, t).Do().CheckCode(http.StatusBadRequest)

//測試他是不是返回200(當然會測試失?。?New("/ok", badHandler, t).Do().CheckCode(http.StatusOK)

//帶著header測試
New("/", badHandler, t).Post().AddParams("name", "value1").AddParams("nam22", "value3").Do()

//帶著cookie測試,并且判斷結(jié)果是否包含字符串。
New("/", cookieHandler, t).Get().AddCookies(cookie).Do().BodyContains("testcookievalue")

//獲取 *http.ResponseRecorder, 然后自己測試
rr = New("/dump", headerHandler, t).Post().AddParams("name", "value1").Do().ResponseRecorder()

//給請求加參數(shù),不寫默認是GET請求
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(),才能進行請求,不然不會請求。
Check操作要在.Do()后,初始化操作要在.Do()之前。

其他

庫地址:https://github.com/qiuker521/...

后續(xù)會增加json測試功能。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/8767.html

相關(guān)文章

  • JavaScript Promise啟示錄

    摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡化異步編程的還是,在端,建議考慮。 本篇,簡單實現(xiàn)一個promise,主要普及promise的用法。 一直以來,JavaScript處理異步都是以callback的方式,在前端開發(fā)領(lǐng)域callback機制...

    Juven 評論0 收藏0
  • [轉(zhuǎn)載·JS] JavaScript Promise啟示錄

    摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡化異步編程的還是,在端,建議考慮。 前段時間頻頻看到Promise這個詞,今天發(fā)現(xiàn)騰訊AlloyTeam寫得這篇很贊,遂轉(zhuǎn)之。 原文鏈接 本篇,主要普及promise的用法。 一直以來,JavaScrip...

    Lyux 評論0 收藏0
  • Apache CVE-2017-7659 漏洞重現(xiàn)及利用分析

    摘要:有漏洞的服務(wù)器源碼下載鏈接通過補丁的修改進行漏洞成因的逆向分析。我們編寫了的程序,同時發(fā)起多個畸形請求,以不斷觸發(fā)后臺崩潰,并讓服務(wù)器不斷陷入重新分配的處理之中。 一、實驗原理介紹 apache在其網(wǎng)站發(fā)布的安全公告,針對CVE-2017-7659漏洞的介紹是這樣的: A maliciously constructed HTTP/2 request could cause mod_ht...

    mzlogin 評論0 收藏0
  • vscode-eslint的踩坑實踐--typescript無法格式化

    摘要:的踩坑實踐無法格式化引言最近開發(fā)的前端項目隨著開發(fā)的人員越來越多,代碼規(guī)范已經(jīng)是一個很難避免的問題了,雖然百度有這個規(guī)則檢查,但是不論是或者是項目本地都沒有配置或檢查,完全靠自覺,這是件非常扯淡的事。 vscode-eslint的踩坑實踐--typescript無法格式化 引言 最近開發(fā)的前端項目隨著開發(fā)的人員越來越多,代碼規(guī)范已經(jīng)是一個很難避免的問題了,雖然百度有fecs這個規(guī)則檢查...

    harryhappy 評論0 收藏0

發(fā)表評論

0條評論

godlong_X

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<