ホームページ >バックエンド開発 >Golang >Gorm 削除句 sqlmock テスト

Gorm 削除句 sqlmock テスト

WBOY
WBOY転載
2024-02-08 22:30:31864ブラウズ

Gorm 删除子句 sqlmock 测试

php エディタ Xinyi では、Gorm delete 句 sqlmock テストを紹介します。 Gorm は Go 言語の優れた ORM フレームワークであり、sqlmock はデータベース操作をシミュレートするために使用される Gorm のテスト ツールです。 Gorm の開発ではデータベースの削除操作をテストする必要がよくありますが、このとき、sqlmock を使用して単体テストや結合テストのためにデータベースの削除操作をシミュレートできます。この記事では、Gorm と sqlmock を使用して削除句をテストする方法を詳しく紹介し、データベース関連の開発作業をより効果的に実行できるようにします。

質問内容

ゴームを削除したところ、結果が返されました:

リーリー

句を含むテストは常に失敗するようになりました。例えば:### リーリー

受信エラー:

'パラメータ [{name: ordinal:1 value:2023-01-18 06:15:34.694274 0000 utc}] を使用してクエリ 'delete from "my_users" where created_at Expected exec または execcontext ここで:\n - SQL と一致します: 'delete'\n - パラメータ付き:\n 0 - 2023-01-18 06:15:34.694274 0000 utc\n - である必要があります次の結果を返します:\n lastinsertid: 1\n rowsaffected: 1"

他の多くの sqlmock 期待値を試しましたが、同様の問題がありました。 また、expectexecには戻り値がなく、expectqueryにのみ戻り値があります... 句を使用して gorm クエリをテストする必要がある人はいますか?

解決策

お客様のニーズにうまく対応することができました。まず、私が作成したファイルを共有してから、関連するすべての変更について説明します。これらのファイルは、運用環境用の

repo.go とテスト コード用の repo_test.go です。

repo.go リーリー

完全なファイルが提供されていないため、何が足りないのか推測してみました。

repo_test.go リーリー

注目すべき変更点は次のとおりです:

    ドキュメントに従って
  1. anytime をインスタンス化しました (コメント内のリンクを見ることができます)。
  2. dbmockgormdb の設定は推測ですが、ほぼ同じであるはずです。
  3. expectexec の使用を expectquery に切り替えました。これは、clauses## の repo.go メソッドで指定された結果を返すためです。 # ファイルセット。
  4. expectquery
  5. expectbeginexpectcommit で囲む必要があります。 最後に、ドライバーが SQL ステートメントのパラメーターを期待する方法の違いに注意してください。実稼働コードでは、
  6. ?
  7. または $1 の使用を選択できます。ただし、テスト コードでは ? のみを使用できます。そうしないと、期待どおりにはなりません。
  8. 何かのお役に立てれば幸いですが、そうでない場合はお知らせください。

以上がGorm 削除句 sqlmock テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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