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处理程序返回的数据流?
1条答案
按热度按时间slwdgvem1#
...可能的备选办法:写入文件的长度,后跟内容...
实际上,@CeriseLimón注解的上述选项已经实现并由前端使用。