非同期メソッドを使用した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);
  }
}

しかし、私は私のセットアップを持っている方法は、このようなものです、そして、私はすべてを壊すことなく正しく行う方法を理解することはできません

//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);
  }
}

ですから、私はコンテキストプロパティを持たずにコンテキストを渡すことなく、これをどのようにテストできますか?私が読んだことから、DBContextはスレッドセーフではないので、私はそれを非同期で行うからです。しかし、私は努力から正しいコンテキストをすべて渡さない限り、努力でそれをテストすることもできません..

私はすべてのサービスメソッドで使用するので、動作しません。

人気のある回答

Asynsはここで問題ではありません。ファクトリメソッドを実装する方法については、この質問を参照してください。 依存性注入に移ったときのステートメントの使用





ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ