ユニットテストZ Entity Framework Plus拡張機能


質問

Z.EntityFramework.Plus拡張機能を使用している場合、Future()だけでなく、プラスの拡張機能のいずれかが使用されているときに、コンテキストが返すものを模擬/置換する方法を見つけることができません。私が試したものはすべて、zエクステンションの将来のライブラリ内でNullReferenceExceptionをスローします。

リポジトリの例:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

ユニットテストリポジトリ:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

先物を使用しないとうまくいきません。私はいくつかの方法を嘲笑しようとしましたが、常にエラーが発生します。ほとんどの場合、 "oops Z extensionsにエラーが発生しました"という例外があります。

Z拡張が実際のObjectContextを期待していますが、これを克服する方法がわからないからです。誰も同じような問題を経験しましたか?誰もが解決策を知っていますか?ありがとう。

エキスパート回答

未来の機能は実際のObjectContext期待していObjectContext 。コンテキストが見つからないのでGetDbContextメソッドが呼び出されたときに現在のシナリオが失敗すると思います。

私は回避策は認識していませんが、バッチせずにすべてのクエリを解決するUseMockContextなどのオプションを追加することは可能です(まったく未来の機能を使用していない場合とまったく同じです)。

このオプションを追加すると、現在の問題を解決できるかどうかを教えてください。

このような場合は、 https : //github.com/zzzprojects/EntityFramework-Plus/issuesで問題を作成することをおすすめします





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