diff --git a/context.go b/context.go index 1dc730e3..1fe3f568 100644 --- a/context.go +++ b/context.go @@ -649,6 +649,9 @@ func (c *Context) initFormCache() { if c.formCache == nil { c.formCache = make(url.Values) req := c.Request + if req == nil { + return + } if err := req.ParseMultipartForm(c.engine.MaxMultipartMemory); err != nil { if !errors.Is(err, http.ErrNotMultipart) { debugPrint("error on parse multipart form array: %v", err) diff --git a/context_test.go b/context_test.go index e8d305e4..f4c944c3 100644 --- a/context_test.go +++ b/context_test.go @@ -3955,3 +3955,13 @@ func BenchmarkGetMapFromFormData(b *testing.B) { }) } } + +func TestContextPostFormNoRequest(t *testing.T) { + c, _ := CreateTestContext(httptest.NewRecorder()) + + value, ok := c.GetPostForm("key") + assert.False(t, ok) + assert.Empty(t, value) + assert.Empty(t, c.PostForm("key")) + assert.Equal(t, "fallback", c.DefaultPostForm("key", "fallback")) +}