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 です。
リーリー
リーリー
をインスタンス化しました (コメント内のリンクを見ることができます)。
、
mock、
gormdb の設定は推測ですが、ほぼ同じであるはずです。
の使用を
expectquery に切り替えました。これは、
clauses## の repo.go
メソッドで指定された結果を返すためです。 # ファイルセット。
expectbegin
と expectcommit
で囲む必要があります。
最後に、ドライバーが SQL ステートメントのパラメーターを期待する方法の違いに注意してください。実稼働コードでは、$1
の使用を選択できます。ただし、テスト コードでは ?
のみを使用できます。そうしないと、期待どおりにはなりません。
以上がGorm 削除句 sqlmock テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。