我正试图为此设置单元测试。但我见过的每个实例都是这种类型的设置。它将以这种方式工作。
//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);
}
}
}
那么如何在没有Context属性并传递上下文的情况下测试它。因为从我所读过的内容来看,我无法实现异步,因为DBContext不是线程安全的。但我也不能用Effort测试它,除非我从Effort传递正确的上下文。
不工作,因为我在每个服务方法上都使用了一个。
答案 0 :(得分:0)
Asyns在这里不是问题。请参考这个问题,看看如何实现工厂方法: What happens to using statement when I move to dependency injection