Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Unit menguji pengendali HTTP yang mengembalikan berbilang aliran fail

Unit menguji pengendali HTTP yang mengembalikan berbilang aliran fail

WBOY
WBOYke hadapan
2024-02-09 08:39:18712semak imbas

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

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.

Kandungan soalan

Pengendali http

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...))
}

Ujian unit

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?

Kendalikan strim fail yang dikembalikan

Bagaimana untuk memisahkan berbilang fail yang dikembalikan oleh pengendali http? Bagaimana untuk menggunakan aliran data yang dikembalikan oleh pengendali http?

Penyelesaian

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

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam