Heim > Artikel > Backend-Entwicklung > Unittest eines HTTP-Handlers, der mehrere Dateistreams zurückgibt
In diesem Artikel stellt der PHP-Editor Strawberry vor, wie man einen HTTP-Handler testet, der mehrere Dateistreams zurückgibt. Während des Entwicklungsprozesses stoßen wir häufig auf Situationen, in denen mehrere Dateiströme zurückgegeben werden müssen, z. B. Bildkomprimierung, Dateizusammenführung usw. Allerdings ist Unit-Test in diesem Fall nicht so einfach zu implementieren. In diesem Artikel erfahren Sie, wie Sie mit den entsprechenden Tools und Techniken effektive Komponententests schreiben, um sicherzustellen, dass unsere HTTP-Handler mehrere Dateiströme korrekt zurückgeben.
Ich habe einen HTTP-Handler wie diesen:
func routehandler(c echo.context) error { outs := make([]io.reader, 5) for i := range outs { outs[i] = // ... comes from a logic. } return c.stream(http.statusok, "application/binary", io.multireader(outs...)) }
Ich habe vor, einen Unit-Test für einen http-Handler zu schreiben und den Rückgabestrom für mehrere Dateien zu untersuchen.
Meine Unit-Tests haben diese Hilfstypen und -funktionen:
type handler func(echo.context) error // send request to a handler. get back response body. func send(req *http.request, handler handler) ([]byte, error) { w := httptest.newrecorder() e := echo.new() c := e.newcontext(req, w) // call the handler. err := handler(c) if err != nil { return nil, err } res := w.result() defer res.body.close() return ioutil.readall(res.body) }
Ich sende dann eine Anfrage an den http-Handler meines Unit-Tests mit den oben genannten Typen und Funktionen:
// From within my unit test: // Initialize request... var data []byte data, err := Send(request, RouteHandler) // How to separate the multiple files returned here? // How to work with the returned data?
Wie trenne ich mehrere vom HTTP-Handler zurückgegebene Dateien? Wie verwende ich den vom HTTP-Handler zurückgegebenen Datenstrom?
...Mögliche Optionen: Schreiblänge gefolgt vom Dateiinhalt...
Tatsächlich ist die oben von @CeriseLimón kommentierte Option bereits implementiert und wird vom Frontend verwendet.
Das obige ist der detaillierte Inhalt vonUnittest eines HTTP-Handlers, der mehrere Dateistreams zurückgibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!