-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
Feature Proposal Description
This issue proposes to add a TestWithInterrupt method to the App struct for internal testing.
This issue proposed to add a TestConfig struct as an optional parameter to app.Test() for internal testing.
Currently, app.Test() allows us to test whether an endpoint completely returns before the given timeout. If it doesn't, any provided reponse is discarded and an error only returns.
TestWithInterrupt aims to provide a way to not discard the response. In most currently available cases, there would be an EOF error (which would be returned by TestWithInterrupt as an expected behavior).
The TestConfig struct aims to provide a way to tell app.Test() to not discard the response (via the new field "ErrOnTimeout"). It would look like the following:
type TestConfig struct {
Timeout time.Duration
ErrOnTimeout bool
}In most currently available cases, there would be an EOF error (which would be returned as an expected behavior).
This method though is useful for buffered streaming that is allowed via fasthttp. This feature is coming to Fiber through the following issue and pull request:
Issue:
#3127
PR:
#3131
Alignment with Express API
N/A as it is a test feature, that is similar to app.Test.
HTTP RFC Standards Compliance
N/A as it is a test feature, that is similar to app.Test.
API Stability
This would be a new method, keeping the current app.Test the same. This will help avoid changes to current tests.
Feature Examples
app := New()
app.Get("/", func(c Ctx) error {
time.Sleep(1 * time.Second)
return c.SendString("Should never be called")
})
respBody, err := app.Test(httptest.NewRequest(MethodGet, "/", nil), &TestConfig{
Timeout: 100*time.Millisecond,
ErrOnTimeout: false, // If false, do not discard response
})Checklist:
- I agree to follow Fiber's Code of Conduct.
- I have searched for existing issues that describe my proposal before opening this one.
- I understand that a proposal that does not meet these guidelines may be closed without explanation.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status