Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengejek gin.Konteks dengan BindJSON untuk Ujian Pergi?
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:
w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = &http.Request{ Header: make(http.Header), }
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)) }
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) }
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!