0

エンティティ フレームワークに取り組んでおり、アプリケーションの単体テストを行いたいと考えています。問題はEntityContextです。Moq ライブラリを使用しています。Moq はインターフェイスと抽象クラスで使用できます。しかし、ここでの問題は、EntityContext が抽象クラスでもインターフェースでもない DbContext から派生していることです。コンテキストに moq オブジェクトを提供する方法。ベスト プラクティスを見つけようとしましたが、ほとんどの投稿はかなり古いものでした (2、3 年前)。私はEF 5.0を使用しています.Microsoftまたは他の人がEntityContextをテストするために何かをしたはずだと思います.

public class Repository
{
private EntityContext _context;
public EntityContext Context;

    public Repository()
    {
        _context = new EntityContext();
    }

    internal Repository(MockContext mockContext)  // Mock Context. Is it possible?
    {
        _context = mockContext;
    }
}

注: 繰り返し質問して申し訳ありませんが、このトピックに関する最近の質問を見つけることができませんでした。

4

1 に答える 1

0

私がすることは、EntityContext にインターフェースを実装させることです。EntityContext が Employees のリストと Departments のリストを公開するとします。あなたは次のようなことをします:

public interface IEntityContext
{
    IQueryable Departments { get; set;}
    IQueryable Employees { get; set;}
}

リポジトリでは、IEntityContext の実装が必要です。本番コードでは、実際の実装である EntityContext を送信します。単体テストでは、期待値を指定した後に Mock<IEntityContext>().Object を送信します。もう 1 つのオプションは、IEntityContext を実装し、単体テストでメモリ内 DB として機能する FakeEntityContext を実装することです。

于 2013-03-29T08:06:38.433 に答える