Test unitaire des extensions Z Entity Framework Plus

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

Question

Lorsque j'utilise des extensions Z.EntityFramework.Plus, je ne trouve aucun moyen de simuler / substituer ce que le contexte renvoie lorsque l'une des extensions plus, pas seulement Future (), est utilisée. Tout ce que j’essaie renvoie une exception NullReferenceException dans la future bibliothèque d’extensions z.

Exemple de référentiel:

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

Répertoire de tests unitaires:

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

Sans utiliser Futures, cela fonctionne bien. J'ai essayé de me moquer de différentes manières, mais j'ai toujours une erreur. La plupart du temps, il s'agit d'une exception "oops Z extensions a rencontré une erreur".

Je pense que c'est parce que les extensions Z attendent un vrai ObjectContext mais ne savent pas comment surmonter cela. Quelqu'un at-il rencontré des problèmes similaires? Est-ce que quelqu'un connaît des solutions? Merci.

Réponse d'expert

La fonctionnalité Future attend un véritable ObjectContext . Je crois que le scénario actuel échoue lorsque la méthode GetDbContext est appelée car aucun contexte ne peut être trouvé.

Je ne suis pas au courant d'une solution de contournement, mais il est possible d'ajouter une option telle que UseMockContext qui résoudra toutes les requêtes sans les mettre en lot (exactement comme si vous n'utilisiez pas la fonctionnalité Future).

Faites-moi savoir si l'ajout de cette option est quelque chose qui pourrait résoudre votre problème actuel.

Si tel est le cas, je vous suggère de créer un problème ici: https://github.com/zzzprojects/EntityFramework-Plus/issues




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi