使用異步方法使用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合法嗎? 是的,了解原因