Test di unità Z Entity Framework Plus Extensions

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

Domanda

Quando si utilizzano le estensioni Z.EntityFramework.Plus, non riesco a trovare un modo per simulare / sostituire ciò che viene restituito dal contesto quando vengono utilizzate le estensioni più, non solo Future (). Tutto ciò che provo genera una NullReferenceException all'interno della libreria futura delle estensioni z.

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

Repository test unità:

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

Senza usare Futures funziona bene. Ho provato a prendere in giro diversi modi, ma ottengo sempre un errore. La maggior parte delle volte si tratta di un'eccezione "oops Z extensions incontrate con errori".

Penso che sia perché le estensioni Z si aspettano un vero ObjectContext ma non sono sicuro di come superarlo. Qualcuno ha avuto problemi simili? Qualcuno sa di qualche soluzione? Grazie.

Risposta esperta

La funzione Future si aspetta un vero ObjectContext . Credo che lo scenario attuale fallisca quando viene chiamato il metodo GetDbContext poiché non è possibile trovare il contesto.

Non sono a conoscenza di una soluzione alternativa, ma potrebbe essere possibile aggiungere un'opzione come UseMockContext che risolverà tutte le query senza UseMockContext (esattamente come se non si stesse utilizzando la funzionalità Future).

Fammi sapere se aggiungere questa opzione è qualcosa che potrebbe risolvere il tuo problema attuale.

Se questo è il caso, ti suggerisco di creare un problema qui: https://github.com/zzzprojects/EntityFramework-Plus/issues




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché