Entity Frameworkのインメモリプロバイダーはありますか?

entity-framework rhino-mocks

質問

私はADO .NET Entity Frameworkに対して書かれた単体テストコードです。インメモリデータベースに行を追加し、コードがそれらを正しく取得するようにします。

Rhino Mocksを使ってEntity Frameworkをモックすることはできますが、それだけでは不十分です。どのエンティティを返すべきかをクエリに伝えます。これはwhere節も.Include()文もテストしません。私のwhere句が意図した行だけにマッチし、他のものにはマッチしないようにしたいのです。私が必要としている実体を求めているのであり、そうではないのはないと確信したいのです。

例えば:

class CustomerService
{
    ObjectQuery<Customer> _customerSource;
    public CustomerService(ObjectQuery<Customer> customerSource)
    {
        _customerSource = customerSource;
    }
    public Customer GetCustomerById(int customerId)
    {
        var customers = from c in _customerSource.Include("Order")
            where c.CustomerID == customerId
            select c;
        return customers.FirstOrDefault();
    }
}

ObjectQueryをモックして、注文が入力された既知の顧客を返す場合、CustomerServiceに適切なwhere句とIncludeがあることをどのように確認しますか?いくつかの顧客の行といくつかの注文の行を挿入してから、正しい顧客が選択されて注文が移入されたことを表明します。

受け入れられた回答

現時点ではEF用のメモリー内プロバイダーはありませんが、Highway.Dataを見れば、基本的な抽象化インターフェースとInMemoryDataContextがあります。

Highway.Dataを使用したデータアクセスとEFのテスト


人気のある回答

InMemoryプロバイダーはEF7 (プレリリース)に含まれています。

NuGetパッケージを使うことも、GitHubのEFリポジトリ見ることもできます( ソースの表示 )。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ