FakeItEasy のこの投稿に似た例を誰かが持っているかどうか疑問に思っていました(元の投稿はこちらです。正しいセットアップを見つけようとしましたが、正しく設定できませんでした。オンラインで例を見つけることができませんでした。教え始めています。自分で単体テストを行い、FakeItEasy を使用することにしました.これまでの私のプロジェクトはすべてエンティティ フレームワークを使用し、Repository/UOW パターンは使用していません.これは、DbSet と DbContext が私の小規模なアプリケーションには十分であると考えているためです. EFとユニットテストですが、私はまだこれを理解したいと思っています.私が得たエラーは
System.NotImplementedException: メンバー 'IQueryable.Provider' は型 'DbSet
1Proxy' which inherits from 'DbSet
1' に実装されていません。'DbSet`1' のテスト ダブルは、使用されるメソッドとプロパティの実装を提供する必要があります。
どの方向も非常に役立ちます。ありがとうございました。
var data = new List<Request>
{
request1,
request2,
request3
}.AsQueryable();
var fakeDbSet = A.Fake<DbSet<Request>>();
A.CallTo(() => ((IQueryable<Request>)fakeDbSet).Provider).Returns(data.Provider);
A.CallTo(() => ((IQueryable<Request>)fakeDbSet).Expression).Returns(data.Expression);
A.CallTo(() => ((IQueryable<Request>)fakeDbSet).ElementType).Returns(data.ElementType);
A.CallTo(() => ((IQueryable<Request>)fakeDbSet).GetEnumerator()).Returns(data.GetEnumerator());
var fakeContext = A.Fake<RequestPortalContext>();
A.CallTo(() => fakeContext.Requests).Returns(fakeDbSet);
var service = new RequestReadService(fakeContext);
var requests = service.GetAllRequests();
Assert.AreEqual(3, requests.Count);
Assert.AreEqual("Test1", requests[0].Name);
Assert.AreEqual("Test2", requests[1].Name);
Assert.AreEqual("Test3", requests[2].Name);