0

EF 5.0/DbContext の使用に関連する単体テストのトピックを理解しようと、しばらく時間を費やしました。以下の関数は、単体テスト用のものです。私の基本的な理解から、次のオプションがあるようです。

  1. リポジトリ インターフェイスを作成します。1 つは実際の実装で、もう 1 つは偽の実装です。偽物は、エンティティ オブジェクトから作成したデータを使用します。この場合、リストを作成できます...しかし、問題はlinq->objects(テスト)がlinq->EFと同じではないため、実際には何もテストしていませんか?

  2. DBContext からの情報を使用して小さなテスト用 DB を作成し、データを DB に追加して取得します。MSunit テスト実行の一部として Dbcontext から作成された DB を取得するにはどうすればよいですか?

  3. 単体テストを行う必要はありません。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);
    }
4

2 に答える 2

1

直接単体テストの代わりに統合テストを実行することもできます。

unit-tests プロジェクトの App.config/Web.Config で別の接続文字列を指定するだけで、実際の EF DBContext に対して統合テストを実行できます。

これとそれに対するすべての回答を読んでください。

ここで実装例を見ることができます

于 2013-05-23T18:05:21.970 に答える