Go Mock Postgresql错误

时间:2018-10-29 13:16:18

标签: postgresql unit-testing go pq

如本answer中所述,我已经编写了用于检查唯一键冲突的代码:

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

1 个答案:

答案 0 :(得分:4)

Godoc中所述,ErrorCode is a five-character error code. err.Code.Name()得到了错误的人性化版本,但是错误本身应该由错误代码表示并由此构造,其中in this case is 23505