国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

godlong_X / 732人閱讀

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

先不提本庫,給個用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請求,至于請求是否加參數,加什么參數,就成了另一個更大的問題。

本庫用法
//一個永遠返回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測試,并且判斷結果是否包含字符串。
New("/", cookieHandler, t).Get().AddCookies(cookie).Do().BodyContains("testcookievalue")

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

//給請求加參數,不寫默認是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/...

后續會增加json測試功能。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/8767.html

相關文章

  • JavaScript Promise啟示錄

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

    Juven 評論0 收藏0
  • [轉載·JS] JavaScript Promise啟示錄

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

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

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

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

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

    harryhappy 評論0 收藏0

發表評論

0條評論

godlong_X

|高級講師

TA的文章

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