나는 이것을 위해 유닛 테스트를 설정하려고 노력하고있다. 그러나 내가 실제로 보아온 모든 예는 이러한 유형의 설정입니다. 이 방법으로 작동합니다.
//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 Property를 사용하지 않고 컨텍스트를 전달하지 않고 어떻게 이것을 테스트 할 수 있습니까? 왜냐하면 DBContext는 스레드로부터 안전하지 않기 때문에 내가 읽은 것 때문에 비동기로 처리 할 수 없기 때문입니다. 하지만 노력에서 올바른 컨텍스트를 모두 전달하지 않으면 노력도하지 않습니다.
모든 서비스 방법에서 사용하기 때문에 작동하지 않을 것입니다.