5

create task メソッドを呼び出す単体テストを作成しています。create task メソッドは、テストの目的であるモック化された外部オブジェクトを呼び出しますが、テスト済みのメソッド内にはSaveChanges、タスクを保存する呼び出しもあります。私がやろうとしているのは、メソッドがデータベースにアクセスしなくなるように、DbContext内部のクラスをシムすることです。System.Data.EntitySaveChanges

偽のアセンブリを追加しましたが、 .FakesSystem.Data.Entityを使用すると、アクセスできますが、「シンボル 'Fakes' を解決できません」と表示されます (ただし、System.Data の偽のアセンブリを追加していません)。System.Data.EntitySystem.Data.Fakes

エンティティ コンテキストで他のメソッドを偽造しましたが、メソッドが DbContext から継承されているため、エンティティで SaveChanges メソッドを偽造することはできません。

ShimDBEntities.AllInstances.SaveChanges = (x) => { ... };   

コードの上部のチャンクには、「シンボル 'SaveChanges' を解決できません」と書かれています。

では、Microsoft Fakes を使用して DbContext をシムするにはどうすればよいでしょうか?

4

1 に答える 1

2

SaveChanges私は自分のクラスでメソッドを作成し、それBaseRepositoryを自分が持っていたすべての派生リポジトリで使用することで、なんとかそれを行うことができましたdb.SaveChanges

それから私BaseRepositoryは私のSaveChanges方法が何もしないように私をシムしました

于 2013-02-22T11:49:55.940 に答える