3 回答
TA贡献2037条经验 获得超6个赞
我发现对于此类测试非常简单的另一种方法是将测试资产放置在相对于包的 test_data 目录中。在我的测试文件中,我通常会创建一个帮助程序来创建 *http.Request 的实例,它允许我在 multipart.File 上非常轻松地运行表测试(为简洁起见,已删除错误检查)。
func createMockRequest(pathToFile string) *http.Request {
file, err := os.Open(pathToFile)
if err != nil {
return nil
}
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile("file", filepath.Base(pathToFile))
if err != nil {
return nil
}
_, _ = io.Copy(part, file)
err = writer.Close()
if err != nil {
return nil
}
// the body is the only important data for creating a new request with the form data attached
req, _ := http.NewRequest("POST", "", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
return req
}
- 3 回答
- 0 关注
- 422 浏览
添加回答
举报