Testing custom JSON render

This commit is contained in:
朱宗辉 2024-11-16 02:34:02 +08:00
parent ea103661a9
commit 6144ce5af3

View File

@ -9,6 +9,7 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/gin-gonic/gin/render"
"html/template" "html/template"
"io" "io"
"io/fs" "io/fs"
@ -3123,3 +3124,32 @@ func TestContextNext(t *testing.T) {
assert.True(t, exists) assert.True(t, exists)
assert.Equal(t, "value3", value) assert.Equal(t, "value3", value)
} }
// MyJSON customizing JSON rendering
type MyJSON struct {
Data any
render.JSON
}
// Render rewrite the Render function
func (r MyJSON) Render(w http.ResponseWriter) error {
_, err := w.Write([]byte("test"))
return err
}
func NewMyJSON(data any) render.Render {
return &MyJSON{Data: data}
}
// TestCustomJSONRender the test uses a custom JSON render.
// The final result is that the user can customize the JSON render without affecting the original function.
func TestCustomJSONRender(t *testing.T) {
w := httptest.NewRecorder()
c, _ := CreateTestContext(w)
c.RegisterJsonRender("MyTestJSON", NewMyJSON)
c.SetJSONRender("MyTestJSON")
c.JSON(http.StatusCreated, H{"foo": "bar", "html": "<b>"})
t.Log(w.Body.String())
}