Unit Testing von Z Entity Framework Plus-Erweiterungen

c# entity-framework entity-framework-plus nsubstitute unit-testing

Frage

Bei der Verwendung von Z.EntityFramework.Plus-Erweiterungen kann ich keine Möglichkeit finden, nachzuahmen / zu ersetzen, was der Kontext zurückgibt, wenn eine der Plus-Erweiterungen und nicht nur Future () verwendet wird. Alles, was ich versuche, löst eine NullReferenceException in der zukünftigen Bibliothek der z-Erweiterungen aus.

Repository Beispiel:

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);
}

Einheitentest-Repository:

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);
}

Ohne Futures funktioniert es gut. Ich habe versucht, ein paar verschiedene Arten zu verspotten, bekomme aber immer einen Fehler. Meistens handelt es sich um eine Ausnahme "oops Z extensions hat einen Fehler festgestellt".

Ich denke, das liegt daran, dass Z-Erweiterungen einen echten ObjectContext erwarten, aber nicht sicher sind, wie das zu beheben ist. Hat jemand ähnliche Probleme erlebt? Kennt jemand irgendwelche Lösungen? Vielen Dank.

Expertenantwort

Die Future-Funktion erwartet einen echten ObjectContext . Ich glaube, dass das aktuelle Szenario fehlschlägt, wenn die Methode GetDbContext aufgerufen wird, da kein Kontext gefunden werden kann.

Mir ist keine UseMockContext , aber es ist möglich, eine Option wie UseMockContext , die alle Abfragen UseMockContext , ohne sie zu UseMockContext (genau so, als ob Sie nicht die Funktion "Zukunft" verwenden würden).

Lassen Sie mich wissen, wenn Sie diese Option hinzufügen, ist dies etwas, das Ihr aktuelles Problem lösen könnte.

Wenn dies der Fall ist, schlage ich vor, dass Sie hier ein Problem erstellen: https://github.com/zzzprojects/EntityFramework-Plus/issues




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum