Inhaltsverzeichnis
Frageninhalt
http-Handler
Einheitentests
Verarbeiten Sie den zurückgegebenen Dateistream
Workaround
Heim Backend-Entwicklung Golang Unittest eines HTTP-Handlers, der mehrere Dateistreams zurückgibt

Unittest eines HTTP-Handlers, der mehrere Dateistreams zurückgibt

Feb 09, 2024 am 08:39 AM
Reflow

对返回多个文件流的 HTTP 处理程序进行单元测试

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.

Frageninhalt

http-Handler

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...))
}
Nach dem Login kopieren

Einheitentests

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)
}
Nach dem Login kopieren

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?
Nach dem Login kopieren

Verarbeiten Sie den zurückgegebenen Dateistream

Wie trenne ich mehrere vom HTTP-Handler zurückgegebene Dateien? Wie verwende ich den vom HTTP-Handler zurückgegebenen Datenstrom?

Workaround

...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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

„Collapsed Star Railroad' Mikhail Wo gehst du hin Erfolgsführer „Collapsed Star Railroad' Mikhail Wo gehst du hin Erfolgsführer May 09, 2024 pm 09:20 PM

„Collapsed Star Railroad' Mikhail Wo gehst du hin Erfolgsführer

Wie kann das Douyin-Verkehrslimit gelöst werden? Was soll ich tun, wenn der Verkehr begrenzt ist, sodass er zurückfließen kann? Wie kann das Douyin-Verkehrslimit gelöst werden? Was soll ich tun, wenn der Verkehr begrenzt ist, sodass er zurückfließen kann? Mar 22, 2024 am 09:00 AM

Wie kann das Douyin-Verkehrslimit gelöst werden? Was soll ich tun, wenn der Verkehr begrenzt ist, sodass er zurückfließen kann?

Ist Ace Racing Post-Holiday-Syndrom: Die wirklich erfahrenen Fahrer haben bereits begonnen, sich auf das Laternenfest vorzubereiten Ist Ace Racing Post-Holiday-Syndrom: Die wirklich erfahrenen Fahrer haben bereits begonnen, sich auf das Laternenfest vorzubereiten Feb 21, 2024 pm 06:04 PM

Ist Ace Racing Post-Holiday-Syndrom: Die wirklich erfahrenen Fahrer haben bereits begonnen, sich auf das Laternenfest vorzubereiten

Wie kann ich den verlorenen mobilen Steam-Token wiederherstellen? Steam-Einspruchsleitfaden Wie kann ich den verlorenen mobilen Steam-Token wiederherstellen? Steam-Einspruchsleitfaden Mar 14, 2024 pm 10:07 PM

Wie kann ich den verlorenen mobilen Steam-Token wiederherstellen? Steam-Einspruchsleitfaden

Wie beantrage ich ein QQ-Backup-Postfach mit QQ-Postfach? So beantragen Sie ein QQ-Backup-Postfach mit QQ-Postfach Wie beantrage ich ein QQ-Backup-Postfach mit QQ-Postfach? So beantragen Sie ein QQ-Backup-Postfach mit QQ-Postfach Mar 05, 2024 am 09:30 AM

Wie beantrage ich ein QQ-Backup-Postfach mit QQ-Postfach? So beantragen Sie ein QQ-Backup-Postfach mit QQ-Postfach

Dogelon Mars价格预测2024-2030 Dogelon Mars价格预测2024-2030 Mar 22, 2024 pm 03:33 PM

Dogelon Mars价格预测2024-2030

Tausende Menschen standen Schlange für die letzte Beta von „Taris World'. Warum hat sie so viel Aufmerksamkeit erregt? Tausende Menschen standen Schlange für die letzte Beta von „Taris World'. Warum hat sie so viel Aufmerksamkeit erregt? Mar 21, 2024 pm 02:50 PM

Tausende Menschen standen Schlange für die letzte Beta von „Taris World'. Warum hat sie so viel Aufmerksamkeit erregt?

So erhalten Sie Geld per WeChat-Überweisung zurück So erhalten Sie Geld per WeChat-Überweisung zurück May 08, 2024 pm 01:18 PM

So erhalten Sie Geld per WeChat-Überweisung zurück

See all articles