質問: 私がインターンシップでやっているプロジェクトでは、リポジトリパターンを使用する必要があります。プロジェクトはすでにEF Coreを使用していたので、基本的な実装にはすでにリポジトリと作業単位が存在することを読んでいます。私は、クラッタを防ぐために、リポジトリクラスを実装せずにEF Coreメソッドを直接使用することになりました。 さて、私は少し問題があります。このように実装すると、単体テストに関する多くの有益な情報を見つけることができません。要件は厳しい要件であり、私はこの会社の基準のために私のコントローラ内にCRUD機能の100%カバレッジが必要でした。 ここではMicrosoftのドキュメントのいくつか、 ここではSQLiteを使用した統合テストが見つかりましたが、単体テストを理解できないようです。私もいくつかのグーグルを行い、私は統合テスト以外のリソースを見つけることができません。 私はEFコアを使ってユニットテストを直接行うことができますか、またはこのプログラムを適切に単体テストするためにリポジトリを作る必要がありますか?
回答: 別のリポジトリがないので、リポジトリを単体テストする必要はありません。あなたはあなたが持っていないものを単体テストすることはできません。 EFコアで通常テストするのは、実際のデータベースアクセスです。そのためには、 メモリ内のデータベースを使用してデータベースを一時的にセットアップし、完全なテストを実行することができます。もちろん、最小単位テストよりも統合テストです。 しかし、あなたはこれについて考えるべきです:単体テストを書くときには、あなたがテストしているものを実際に知る必要があります。ちょうど「コンポーネントXの単体テストが必要」と言っても、本当の意味合いはありません。通常は、「コンポーネントXのメソッドU、W、Yの単体テストが必要です」のようになります。したがって、実際にテストする必要がある実際の動作を持つメソッドを実際に持たない限り、データベースコンテキストの単体テストを作成しようとすると意味がありません。 自分で書くものだけをテストすることができます。 CRUDに直接データベース・コンテキスト機能を使用しているなどの理由で、何もテストしない場合は何もありません。 EFコアプロジェクトはすでに単体テストを扱っています。ここでは、第三者コードの単体テストを開始したくないかもしれません。