ホームページ  >  記事  >  バックエンド開発  >  go-sqlmock を使用して gorm の問題をテストし、mock.ExpectQuery および regexp.QuoteMeta とクエリを比較します。

go-sqlmock を使用して gorm の問題をテストし、mock.ExpectQuery および regexp.QuoteMeta とクエリを比較します。

WBOY
WBOY転載
2024-02-11 12:48:08445ブラウズ

使用 go-sqlmock 测试 gorm 问题,将查询与mock.ExpectQuery 和 regexp.QuoteMeta 进行比较

開発プロセスでは、go-sqlmock を使用して gorm の問題をテストすることが一般的な要件です。 go-sqlmock はデータベース操作をシミュレートするツールであり、gorm は人気のある Go 言語 ORM ライブラリです。テスト プロセスでは、クエリ ステートメントが期待を満たしているかどうかを比較する必要があることがよくあります。これを行うには、mock.ExpectQuery と regexp.QuoteMeta を比較に使用します。この方法は、コードのテストとデバッグを改善し、プログラムの正確さと安定性を保証するのに役立ちます。次に、gorm テストに go-sqlmock を使用する方法を詳しく紹介し、mock.ExpectQuery と regexp.QuoteMeta を使用してクエリ ステートメントを比較する方法を示します。

質問の内容

予想されるクエリと gorm の実際のクエリを比較する際に問題があります。これが私のコードです:

リーリー

これはモジュール ドメインです:

リーリー

これは私がテストしている関数です:

リーリー

これはコンソールから受け取ったエラーです:

リーリー

このセクションには代わりに「select(.*)」を使用した答えがありますが、私が読んだ限りでは、それは実際の解決策ではありません

回避策

試してみますこの問題の解決に役立ちます。すべてのファイルをダウンロードしましたが、domain.gorepository.go は問題ないようです。
ただし、repository_test.go ファイルにいくつかの小さな問題が見つかりました:

  1. 作成した SQL クエリにバッククォートがありません
  2. 追加 ;
  3. クエリの最後に
  4. withargs(2) メソッドの呼び出しがありません
これらの細かい点を調整すると、次のようなコードになるはずです。

リーリー

それでは、テストを実行してみると、うまくいくはずです。

これで問題が解決したかどうかお知らせください。ありがとうございます。

以上がgo-sqlmock を使用して gorm の問題をテストし、mock.ExpectQuery および regexp.QuoteMeta とクエリを比較します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。