單元測試Z實體框架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);
}

沒有使用Futures它工作正常。我試過嘲笑幾種不同的方法,但總是得到一個錯誤。大多數情況下,它是“oops Z擴展遇到錯誤”異常。

我在想它是因為Z擴展期望一個真正的ObjectContext但不知道如何克服這個問題。有沒有人遇到類似的問題?有誰知道任何解決方案?謝謝。

專家解答

Future功能期待一個真正的ObjectContext 。我相信當調用方法GetDbContext時,當前場景失敗,因為找不到上下文。

我不知道有一種解決方法,但可以添加一個選項,例如UseMockContext ,它將解析所有查詢而不對它們進行批處理(就像你沒有使用Future功能一樣)。

讓我知道如果添加此選項,它可以解決您當前的問題。

如果是這種情況,我建議你在這裡創建一個問題: https//github.com/zzzprojects/EntityFramework-Plus/issues





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因