Test unitaire avec effort EF6 avec méthodes asynchrones


Question

J'essaie de configurer les tests unitaires pour cela. Mais chaque exemple que j'ai vu qui fonctionne réellement est ce type de configuration. Cela fonctionnera de cette façon.

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

Mais la configuration de la mienne ressemble à ceci. Je ne vois pas comment le faire correctement sans tout casser.

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

Alors, comment puis-je tester cela, sans avoir une propriété de contexte et sans transmettre le contexte. Parce que d'après ce que j'ai lu, je ne peux pas le faire en asynchrone, car DBContext n'est pas thread-safe. Mais je ne peux pas non plus le tester avec Effort à moins que je transmette tout le contexte correct de Effort.

Ne fonctionnera pas parce que j'utilise une méthode using sur chaque service.

Réponse populaire

Asyns n'est pas un problème ici. Veuillez vous référer à cette question pour voir comment implémenter la méthode de la fabrique: que devient l’instruction lorsqu’on passe à l’injection de dépendance





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