Dalam artikel ini, editor PHP Strawberry akan memperkenalkan cara menguji unit pengendali HTTP yang mengembalikan berbilang aliran fail. Semasa proses pembangunan, kami sering menghadapi situasi di mana berbilang aliran fail perlu dikembalikan, seperti pemampatan imej, penggabungan fail, dsb. Walau bagaimanapun, ujian unit dalam kes ini tidak begitu mudah untuk dilaksanakan. Dalam artikel ini, kami akan meneroka cara menggunakan alatan dan teknik yang sesuai untuk menulis ujian unit yang berkesan bagi memastikan pengendali HTTP kami mengembalikan berbilang aliran fail dengan betul.
Saya mempunyai pengendali http seperti ini:
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...)) }
Saya bercadang untuk menulis ujian unit untuk pengendali http dan menyiasat aliran pulangan untuk berbilang fail.
Ujian unit saya mempunyai jenis dan fungsi pembantu ini:
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) }
Saya kemudian menghantar permintaan kepada pengendali http dari ujian unit saya menggunakan jenis dan fungsi di atas:
// 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?
Bagaimana untuk memisahkan berbilang fail yang dikembalikan oleh pengendali http? Bagaimana untuk menggunakan aliran data yang dikembalikan oleh pengendali http?
...Pilihan yang mungkin: panjang tulis diikuti dengan kandungan fail...
Malah, pilihan di atas yang diulas oleh @CeriseLimón telah pun dilaksanakan dan digunakan oleh bahagian hadapan.
Atas ialah kandungan terperinci Unit menguji pengendali HTTP yang mengembalikan berbilang aliran fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!