Search code examples
postgresqlunit-testinggopq

Go Mock postgresql errors


As discussed in this answer, I have written code for checking a unique key violation:

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

For writing unit-testcases, I need to mock this error. I have written the mock for the error like this:

return pq.Error{Code: "unique_violation"}

But this does not matches with the code. How do I mock the pq.Error?


Solution

  • As noted in the Godoc, ErrorCode is a five-character error code. err.Code.Name() gets the human-friendly version of the error, but the error itself should be represented, and thus constructed, by the error code, which in this case is 23505.