Rumah > pembangunan bahagian belakang > Golang > Bagaimana Mengejek BindJSON gin.Context dalam Ujian Unit Go dengan Berkesan?

Bagaimana Mengejek BindJSON gin.Context dalam Ujian Unit Go dengan Berkesan?

DDD
Lepaskan: 2024-12-11 02:38:12
asal
959 orang telah melayarinya

How to Effectively Mock gin.Context's BindJSON in Go Unit Tests?

Cara Mengejek Gin.Context for BindJSON

Apabila menguji kod Go yang menggunakan rangka kerja Gin dan memerlukan mengejek gin.Konteks untuk BindJSON kefungsian, adalah penting untuk memastikan bahawa:

  1. Mencipta Konteks Ujian Gin: Buat seketika gin ujian.Konteks dan tetapkan *http.Minta kepada nilai bukan nol.
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)

c.Request = &http.Request{
    Header: make(http.Header),
}
Salin selepas log masuk
  1. Ejek Badan POST JSON : Gunakan fungsi MockJsonPost untuk meniru permintaan POST dengan JSON body.
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

Argumen kandungan boleh berupa sebarang struktur data atau peta yang boleh dimarshal.

Contoh:

func TestPostImageToDBDao(t *testing.T) {
    w := httptest.NewRecorder()
    ctx, _ := gin.CreateTestContext(w) 

    ctx.Request = &http.Request{
        Header: make(http.Header),
    }

    MockJsonPost(ctx, map[string]interface{}{
        "articleUUID": "bea1b24d-0627-4ea0-aa2b-8af4c6c2a41c",
        "imageNames":  "b8119536-fad5-4ffa-ab71-2f96cca19697",
    })

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

Sumber Berkaitan:

  • [Cara menguji unit Go Fungsi pengendali gin?](https://stackoverflow.com/questions/52336566/how-to-unit-test-a-go-gin-handler-function)

Atas ialah kandungan terperinci Bagaimana Mengejek BindJSON gin.Context dalam Ujian Unit Go dengan Berkesan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan