我\xe2\x80\x99m 测试我的一个http 处理程序。\n像这样的curl 可以工作:curl localhost:8080/v1/parts/2bb834c9-8e17-4e2c-80b9-a20b80732899。\n但是相应的测试失败,因为处理程序无法从URL 中提取id。
请看一下这个测试文件。我不\xe2\x80\x99不明白为什么我的curl命令有效但第17行的newRequest失败。
\n 1 package part\n 2\n 3 import (\n 4 "net/http"\n 5 "net/http/httptest"\n 6 "testing"\n 7\n 8 "github.com/labstack/echo/v4"\n 9 "github.com/stretchr/testify/assert"\n 10 )\n 11\n 12 var handler *Handler\n 13\n 14 func TestGetPart(t *testing.T) {\n 15 e := echo.New()\n 16\n 17 req := httptest.NewRequest("GET", "/v1/parts/2bb834c9-8e17-4e2c-80b9-a20b80732899", nil)\n 18 rec := httptest.NewRecorder()\n 19 c := e.NewContext(req, rec)\n 20\n 21 if assert.NoError(t, handler.handleGetPart(c)) {\n 22 assert.Equal(t, http.StatusOK, rec.Code)\n 23 }\n 24 }\n\nRun Code Online (Sandbox Code Playgroud)\n去测试 -v ./internal/handler/part
\n=== RUN TestGetPart\n2020/09/08 08:51:10 UUID PASSED:\ntime="2020-09-08T08:51:10+02:00" level=error msg="Could not decode string to uuid"\n TestGetPart: handler_test.go:21:\n Error Trace: handler_test.go:21\n Error: Received unexpected error:\n invalid UUID length: 0\n Test: TestGetPart\n--- FAIL: TestGetPart (0.00s)\nRun Code Online (Sandbox Code Playgroud)\n处理程序
\n ID := ctx.Param("id")\n log.Println("UUID PASSED: ", ID)\n uuid, err := uuid.Parse(ID)\n if err != nil {\n logrus.Error("Could not decode string to uuid")\n return err\n }\n\n // Fetch data.json from S3 bucket\n filename := helper.PartFileName(uuid)\n content, err := a.GetObject(filename)\n if err != nil {\n logrus.Error(err)\n return ctx.JSON(http.StatusNotFound, "file not found")\n\n }\n return ctx.String(http.StatusOK, content)\n} \n\nRun Code Online (Sandbox Code Playgroud)\n任何我的路线:
\nfunc Register(router *echo.Echo, handler *Handler) {\n router.GET("/v1/parts/:id", handler.handleGetPart)\n}\nRun Code Online (Sandbox Code Playgroud)\n
您应该这样设置路径:
e := echo.New()
req := httptest.NewRequest("GET", "/", nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
c.SetPath("/:id")
c.SetParamNames("id")
c.SetParamValues("2bb834c9-8e17-4e2c-80b9-a20b80732899")
// rest of the test goes below
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |