go-sqlmock を使用して選択を行い、マップされた ID を返す簡単な単体テストを実行しようとしています。以下のコードスニペット
s.sqlmock.ExpectBegin()
s.sqlmock.
ExpectQuery("select `id` from `project` where `id` = \\? and `archived` = \\1").
WithArgs(2).
WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(strconv.Itoa(1)))
s.sqlmock.ExpectCommit()
テストしたい実装のスニペットは次のとおりです。
...
type Project struct{ Id int64 }
var project Project
tx.Raw("select id from project where id = ? and archived = 1", values["projectId"]).Scan(&project)
...
しかし、次のエラーが発生します。
いくつかの例を試しましたが、成功しませんでした。皆さんの助けに感謝します
アップデート
s.sqlmock.ExpectBegin() and s.sqlmock.ExpectCommit()
コードを削除して、次のようにクエリを変更しようとしました。
s.sqlmock.
ExpectQuery("select id from project where id = ? and archived = 1").
WithArgs(2).
WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(strconv.Itoa(1)))
しかし、次のエラーが発生します。
クエリ: 実際の SQL と一致しませんでした: "select id from project where id = ? and archived = 1" と予想される正規表現 "select id from project where id = ? and archived = 1"