비동기 메소드가있는 EF6을 이용한 단위 테스트

c# effort entity-framework entity-framework-6 unit-testing

문제

나는 이것을 위해 유닛 테스트를 설정하려고 노력하고있다. 그러나 내가 실제로 보아온 모든 예는 이러한 유형의 설정입니다. 이 방법으로 작동합니다.

//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 Property를 사용하지 않고 컨텍스트를 전달하지 않고 어떻게 이것을 테스트 할 수 있습니까? 왜냐하면 DBContext는 스레드로부터 안전하지 않기 때문에 내가 읽은 것 때문에 비동기로 처리 할 수 ​​없기 때문입니다. 하지만 노력에서 올바른 컨텍스트를 모두 전달하지 않으면 노력도하지 않습니다.

모든 서비스 방법에서 사용하기 때문에 작동하지 않을 것입니다.

인기 답변

Asyns는 여기서 문제가되지 않습니다. 팩토리 메서드 구현 방법을 보려면이 질문을 참조하십시오. 종속성 주입으로 이동할 때 문을 사용하면 어떻게됩니까?




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.