使用异步方法使用EF6进行单元测试


我正在尝试为此设置单元测试。但是我见过的每个实例都是这种类型的设置。它将以这种方式工作。

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

但是我的设置方式是这样的,我无法弄清楚如何在不破坏一切的情况下正确地做到这一点

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

那么如何在没有Context属性并传递上下文的情况下测试它。因为从我读过的内容我不能做异步,因为DBContext不是线程安全的。但我也不能用Effort测试它,除非我从Effort传递正确的上下文。

不会工作,因为我在每个服务方法上都使用了一个。

热门答案

Asyns在这里不是问题。请参考这个问题来了解工厂工厂方法: 当我转向依赖注入时,使用语句会发生什么





许可下: CC-BY-SA
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因