私はテーブルClientAdministratorsによって多対多の関係でリンクされているClientsとAdministratorsの2つのテーブルを持っています。LINQ to SQL:多対多の関係を持つ偽のリポジトリ?
実際のアプリケーションでは、これは正常に動作し、クライアントの管理者のリストを取得できます。私の問題は、リポジトリからこれを取得しているサービスクラスを単体テストしようとしています。
私は自分のリポジトリインタフェースを実装しているFakeRepositoryクラスを持っています。私は、問い合わせるサービスクラスのオブジェクトの内部リストをいくつか持っています。
私の問題は、この多対多関係に対して正常にクエリを実行できるようにするために、偽のクラスで関係を取得する方法を見つけることができないことです。
Dim clients = From c in _repository.GetAllClients _
Select New ClientBizObj With {.ID = c.ID, _
.ClientName = c.ClientName, _
.Admins = (From a in c.ClientAdministrators _
Select a.Administrator.UserName).ToList}
c.ClientAdministratorsは(ClientAdministratorの)EntitySetであることがわかります。
私のFakeRepositoryクラスでこの関係を偽って、NullReferenceExceptionsのスローを止めるにはどうしたらいいですか?
私はAdminsを返さない場合は気にしません。クライアントオブジェクトが正常に返されるようにするだけです。
答えはこれらの行にあると確信しています。これを難しくしているのは、GetAllClients()がIEnumerableではなくIQueryableを返すため、サブクエリが偽装するのが難しいということです。この例を私に指摘できれば、とても感謝しています。 – Nick
OK、近くにいるように聞こえます。あなたのモックがIEnumerableを作成し、LINQを参照できる場合、enumerable.AsQueryable()またはAsQueryable()を返すことができます。 –