我想爲此設置單元測試。但我見過的每一個實際工作的例子都是這種類型的設置。它將以這種方式工作。單元測試與努力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);
}
}
但我有我的設置方式是這樣的,我不能弄清楚如何做到這一點正確沒有打破一切
public class SomeService()
{
public async Task<Book> GetBook(int id){
using(var context = new MyContext()
{
return await context.FindAsync(id);
}
}
}
那麼,如何可以測試了這一點,沒有具有上下文屬性並傳遞上下文。因爲從我讀過的東西我不能做異步,因爲DBContext不是線程安全的。但我也不能通過努力測試它,除非我通過所有正確的上下文從努力..
不會工作,因爲我使用每個服務方法使用。
抽象上下文以便在測試時可以替換/模擬。現在數據庫上下文耦合得太緊以允許測試能力 – Nkosi
我該怎麼做,而能夠使用異步?我展示的第一種方式允許我測試,因爲它解耦了Dbcontext,但也使我從異步更改了所有對數據庫的服務調用。 – Dylan