質問: 具体的な理由から、私たちはEntity FrameworkとDapperを使用しているシステムを開発しています:いくつかのメソッドではDapperを使用し、他のメソッドではEntity Frameworkを使用します。 私たちはいくつかの単体テストを開発する必要があります。私はデータベースを単体テストにしようとするいくつかのアプローチを読んできました。しかし、ほとんどのアプローチはEFやDapper特有のようです。 EFとDapperを使用する単体テストを実行するために、同時にデータベースを模擬することができる良いアプローチを提案できますか? たとえば、特定のテストでは、Dapperを使用してデータを取得し、このデータを使用してEFを使用して別のデータを取得します。 前もって感謝します。
回答: テストデータベースを必要とするオプションの1つはdbsafeを使用することです。 それはNuGetパッケージも持っています。 「DALによって使用される実装または技術が変更された場合、テストを再利用できます。 dbsafeは、データベースへのデータの入力、SQLコマンドの実行、および期待されるデータの実際のデータとの比較のためのメソッドを提供します。 SQLスクリプトとデータセットで1つ以上のxml入力ファイルを使用します。 ``` ``` この要素は、テスト中にいつでも実行できるSQLコマンドです。たとえばテーブルのクリーニング、実際のデータの選択 要素には、表の作成に使用できるデータまたは期待されるデータが含まれています。 dbsafeは、AAA(アレンジ、アクト、アサート)パターンを使用して単体テストを書くことをサポートしています。 アレンジは、オブジェクトを初期化し、テスト中のメソッドに渡されるデータの値を設定します。 メソッドExecuteScriptsを使用して、古いレコードを削除するスクリプトを実行できます。メソッドLoadTablesを使用してテーブルを設定できます。 Actは、配列されたパラメータでテスト中のメソッドを呼び出します。 Assertは、テスト中のメソッドの動作が期待どおりに動作することを確認します。 メソッドAssertDatasetVsScriptを使用して、期待されるデータとデータベース内の実際のデータを比較することができます。