0

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"

4

1 に答える 1