如本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
?
答案 0 :(得分:4)
如Godoc中所述,ErrorCode is a five-character error code.
err.Code.Name()
得到了错误的人性化版本,但是错误本身应该由错误代码表示并由此构造,其中in this case is 23505。