Go语言 单元测试返回多个文件流的HTTP处理程序

mxg2im7a  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(233)

HTTP处理程序

我有一个HTTP处理程序,如下所示:

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

单元测试

我打算为HTTP处理程序编写一个单元测试,并调查返回的多个文件流。
我的单元测试有以下帮助器类型和函数:

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

然后,我使用上面的类型和函数从单元测试中向HTTP处理程序发送请求:

// 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?

处理返回的文件流

我如何分离HTTP处理程序返回的多个文件?我如何处理HTTP处理程序返回的数据流?

slwdgvem

slwdgvem1#

...可能的备选办法:写入文件的长度,后跟内容...
实际上,@CeriseLimón注解的上述选项已经实现并由前端使用。

相关问题