0

正如本答案中所讨论的,我编写了用于检查唯一密钥违规的代码:

if err, ok := err.(*pq.Error); ok {
    if err.Code.Name() == "unique_violation" {
        fail(w, http.StatusBadRequest, 0, "Item already exists")
                    return
        }
}

为了编写单元测试用例,我需要模拟这个错误。我已经为这样的错误编写了模拟:

return pq.Error{Code: "unique_violation"}

但这与代码不匹配。我该如何模拟pq.Error

4

1 回答 1

4

Godoc中所述,ErrorCode is a five-character error code. err.Code.Name()获取错误的人性化版本,但错误本身应由错误代码表示并因此构造,在本例中为 23505

于 2018-10-29T13:48:10.383 回答