我想为此设置单元测试。但我见过的每一个实际工作的例子都是这种类型的设置。它将以这种方式工作。单元测试与努力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