6

FoqDbSetを使用してエンティティ フレームワークをモックしたかったのです。次のようになります。

let patients = 
    ([
        Patient(Guid "00000000-0000-0000-0000-000000000001");
        Patient(Guid "00000000-0000-0000-0000-000000000002");
        Patient(Guid "00000000-0000-0000-0000-000000000003");
    ]).AsQueryable()

let mockPatSet = Mock<DbSet<Patient>>.With(fun x ->
    <@ 
        // This is where things go wrong. x doesn't have a property Provider
        x.Provider --> patients.Provider 
    @>
)

いくつかの場所で強制してキャストしようとしましたがx、うまくいきIQueryableません。

hereのドキュメントでわかるように、を介してインターフェイスをDbSet実装していますが、プロパティを「明示的に」実装することで実装しています。IQueryableDbQuery

Moqには Function があるためAs、次のように扱うように指示できますIQueryable

var mockSet = new Mock<DbSet<Blog>>(); 
mockSet.As<IQueryable<Blog>>().Setup(m => m.Provider).Returns(data.Provider); 
4

1 に答える 1