Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk mengejek gin.Konteks dengan BindJSON untuk Ujian Pergi?

Bagaimana untuk mengejek gin.Konteks dengan BindJSON untuk Ujian Pergi?

Patricia Arquette
Lepaskan: 2024-12-07 16:32:14
asal
959 orang telah melayarinya

How to Mock gin.Context with BindJSON for Go Testing?

Cara Menetapkan Mock gin.Context for BindJSON

Apabila bekerja dengan rangka kerja Go dan Gin, sediakan mock gin.Konteks untuk ujian tujuan boleh mencabar, terutamanya apabila ia melibatkan penggunaan BindJSON.

The Masalah:

Anda berhasrat untuk menguji logik sisipan MySQL yang melibatkan BindJSON, tetapi anda tidak boleh berjaya menyediakan gin mock.Konteks yang diperlukan untuk ujian.

Penyelesaian :

Untuk menyediakan gin palsu dengan betul.Konteks, ikuti ini langkah:

  1. Segera ujian gin.Konteks dan pastikan http.Permintaannya bukan nol:
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
c.Request = &http.Request{
    Header: make(http.Header),
}
Salin selepas log masuk
  1. Mock badan POST JSON menggunakan MockJsonPost fungsi:
func MockJsonPost(c *gin.Context, content interface{}) {
    c.Request.Method = "POST"
    c.Request.Header.Set("Content-Type", "application/json")

    jsonbytes, err := json.Marshal(content)
    if err != nil {
        panic(err)
    }
    c.Request.Body = io.NopCloser(bytes.NewBuffer(jsonbytes))
}
Salin selepas log masuk

Anda kini boleh membekalkan antara muka{} hujah kandungan dengan data yang boleh disusun ke dalam JSON, biasanya struct dengan tag JSON yang sesuai atau peta[rentetan]antara muka{} .

Contoh Penggunaan:

func TestMyHandler(t *testing.T) {
    w := httptest.NewRecorder()
    ctx, _ := gin.CreateTestContext(w)
    ctx.Request = &http.Request{
        Header: make(http.Header),
    }

    MockJsonPost(ctx, map[string]interface{}{"foo": "bar"})

    MyHandler(ctx)
    assert.EqualValues(t, http.StatusOK, w.Code)
}
Salin selepas log masuk

Dengan mencipta olok-olok gin.Konteks dan menyuntik data JSON ke dalam permintaan, anda boleh menguji logik BindJSON anda secara berasingan.

Atas ialah kandungan terperinci Bagaimana untuk mengejek gin.Konteks dengan BindJSON untuk Ujian Pergi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan