Maison > Article > développement back-end > Test unitaire d'un gestionnaire HTTP qui renvoie plusieurs flux de fichiers
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.
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...)) }
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) }
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?
Comment séparer plusieurs fichiers renvoyés par le gestionnaire http ? Comment utiliser le flux de données renvoyé par le gestionnaire http ?
...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!