EF 5.0/DbContext の使用に関連する単体テストのトピックを理解しようと、しばらく時間を費やしました。以下の関数は、単体テスト用のものです。私の基本的な理解から、次のオプションがあるようです。
リポジトリ インターフェイスを作成します。1 つは実際の実装で、もう 1 つは偽の実装です。偽物は、エンティティ オブジェクトから作成したデータを使用します。この場合、リストを作成できます...しかし、問題はlinq->objects(テスト)がlinq->EFと同じではないため、実際には何もテストしていませんか?
DBContext からの情報を使用して小さなテスト用 DB を作成し、データを DB に追加して取得します。MSunit テスト実行の一部として Dbcontext から作成された DB を取得するにはどうすればよいですか?
単体テストを行う必要はありません。EFコンテキストの「Where」拡張メソッドをテストしているだけですか?
では、高度になりすぎずに、これについて考える適切な方法を誰かが説明できますか? ほとんどのデモである MVC コントローラーからそれらを呼び出すときのユニット テスト リポジトリ パターンの基本的な概念を理解しています。
public class MSAManager// : IMSAManager
{
private MATT_LocalStatisticsEntities context = new MATT_LocalStatisticsEntities();
//Takes series of FIPS codes and sees if they exist in the DB
public bool IsPlaceExistsV1(string FIPS_SMA, string FIPS_StateCode, string FIPS_CountyCode, string FIPS_EntityCode, DateTime year)
{
var duplicate = context.Places.Where(x => ((x.FIPSMSA == FIPS_SMA) &&
(x.FIPSState == FIPS_StateCode) &&
(x.FIPSCounty == FIPS_CountyCode) &&
(x.FIPSEntity == FIPS_EntityCode) &&
(x.StartDate == year)
));
return (duplicate.Count() != 0);
}