Maison > développement back-end > Golang > le corps du texte

Test unitaire d'un gestionnaire HTTP qui renvoie plusieurs flux de fichiers

WBOY
Libérer: 2024-02-09 08:39:18
avant
680 Les gens l'ont consulté

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

Dans cet article, l'éditeur PHP Strawberry présentera comment tester unitairement un gestionnaire HTTP qui renvoie plusieurs flux de fichiers. Au cours du processus de développement, nous rencontrons souvent des situations dans lesquelles plusieurs flux de fichiers doivent être renvoyés, comme la compression d'images, la fusion de fichiers, etc. Cependant, les tests unitaires dans ce cas ne sont pas si simples à mettre en œuvre. Dans cet article, nous explorerons comment utiliser les outils et techniques appropriés pour écrire des tests unitaires efficaces afin de garantir que nos gestionnaires HTTP renvoient correctement plusieurs flux de fichiers.

Contenu des questions

gestionnaire http

J'ai un gestionnaire http comme celui-ci :

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...))
}
Copier après la connexion

Tests unitaires

Je prévois d'écrire un test unitaire pour un gestionnaire http et d'étudier le flux de retour de plusieurs fichiers.

Mes tests unitaires ont ces types d'assistance et fonctions :

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)
}
Copier après la connexion

J'envoie ensuite une requête au gestionnaire http à partir du test unitaire en utilisant les types et fonctions ci-dessus :

// 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?
Copier après la connexion

Gérer le flux de fichiers renvoyé

Comment séparer plusieurs fichiers renvoyés par le gestionnaire http ? Comment utiliser le flux de données renvoyé par le gestionnaire http ?

Solution de contournement

...Options possibles : longueur d'écriture suivie du contenu du fichier...

En fait, l'option ci-dessus commentée par @CeriseLimón est déjà implémentée et utilisée par le frontend.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!