返回 200 状态代码,尽管使用 WriteHeader 返回另一个状态代码

我正在编写一个 post 终结点,在我的错误处理中,我想返回一个 400。


log.Println("Artifact post requested")

// Check for valid JSON Body

body, err := getJSONBody(r)

if err != nil {

  log.Println("we got an error")

  log.Println(err)

  w.WriteHeader(http.StatusBadRequest)

  return

}


func getJSONBody(r *http.Request) ([]byte, error) {

    if r.Body == nil {

        fmt.Println("body has issues")

        return nil, errors.New("Received an empty body")

    }

    defer r.Body.Close()


    // Read body

    body, readErr := ioutil.ReadAll(r.Body)

    if readErr != nil {

        return nil, readErr

    }

    return body, nil

}

但是当我运行单元测试时,我得到的是200而不是400。任何想法为什么会发生这种情况?测试输出


摇曳的蔷薇
浏览 139回答 1
1回答

喵喵时光机

这是单元测试的问题,使多个请求失败,但使单个请求通过(得到了我正在寻找的400)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go