Prueba unitaria con esfuerzo EF6 con métodos asíncronos


Pregunta

Estoy tratando de configurar pruebas de unidad para esto. Pero cada ejemplo que he visto que realmente funciona es este tipo de configuración. Funcionará de esta manera.

//Setup DBContext
public MyContext(DbConnection connection) : base(connection, true){}
//Have some service that gets passed the context etc..
public class SomeService()
{
  public SomeService(MyContext passedContext){
      Context = passedContext;
  }
  public MyContext Context {get;set;}

  public Book GetBook(int id){
     return Context.Books.Find(id);
  }
}

Pero la forma en que tengo la configuración mía es algo como esto, y no puedo descubrir cómo hacerlo correctamente sin romper todo

//Setup DBContext
public MyContext(DbConnection connection) : base(connection, true){}
//Have some service that gets passed the context etc..
public class SomeService()
{
  public SomeService(MyContext passedContext){
      Context = passedContext;
  }
  public MyContext Context {get;set;}

  public Book GetBook(int id){
     return Context.Books.Find(id);
  }
}

Entonces, ¿cómo puedo probar esto, sin tener una propiedad de contexto y pasar el contexto? Porque por lo que he leído no puedo hacerlo asíncrono, porque DBContext no es seguro para subprocesos. Pero tampoco puedo probarlo con Esfuerzo a menos que pase todo el contexto correcto de Esfuerzo.

No funciona porque uso un método de uso en cada servicio.

Respuesta popular

Asyns no es un problema aquí. Consulte esta pregunta para ver cómo implementar el método de fábrica: ¿Qué sucede con el uso de la declaración cuando me mudo a la inyección de dependencia?





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