虽然 WriteHeader 用于返回另一个状态代码,但返回 200 状态代码

时间:2021-03-11 14:00:09

标签: http go

我正在编写一个 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。知道为什么会发生这种情况吗? Test output

1 个答案:

答案 0 :(得分:-1)

单元测试出了点问题,多次请求失败但单个请求通过(得到了我正在寻找的 400)。