Pruebas unitarias Z Entity Framework Plus Extensions

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

Pregunta

Cuando utilizo las extensiones Z.EntityFramework.Plus, no puedo encontrar una manera de simular / sustituir lo que devuelve el contexto cuando se usa cualquiera de las extensiones más, no solo Futuro (). Todo lo que intento lanza una NullReferenceException dentro de la futura biblioteca de extensiones z.

Ejemplo de repositorio:

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

Repositorio de pruebas unitarias:

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

Sin usar futuros funciona bien. He intentado burlarme de algunas maneras diferentes, pero siempre me da un error. La mayoría de las veces se trata de una excepción de "las extensiones Z de Oops encontraron un error".

Creo que es porque las extensiones Z esperan un ObjectContext real, pero no estoy seguro de cómo superar esto. ¿Alguien ha experimentado problemas similares? ¿Alguien sabe de alguna solución? Gracias.

Respuesta experta

La característica Futuro está esperando un ObjectContext real. Creo que el escenario actual falla cuando se llama al método GetDbContext ya que no se puede encontrar un contexto.

No tengo conocimiento de una solución alternativa, pero es posible agregar una opción como UseMockContext que resolverá todas las consultas sin agruparlas (exactamente como si no estuviera usando la función Futuro).

Avíseme si agregar esta opción es algo que podría resolver su problema actual.

Si este es el caso, le sugiero que cree un problema aquí: https://github.com/zzzprojects/EntityFramework-Plus/issues




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué