最初に EF Code を使用しており、販売データベースのデータ コンテキストがあります。さらに、データ コンテキストの上に位置し、いくつかの基本的な CRUD 操作を実行するクラスがあります。
たとえば、次の関数があります。
public static T Create<T>(int userId, T entity) where T : class, IAllowCreate
{
if (entity == null)
throw new ArgumentNullException("entity");
using (SalesContext dc = new SalesContext())
{
dc.Set<T>().Add(entity);
dc.SaveChanges();
return entity;
}
}
偽のコンテキストと IDBset プロパティを作成する方法の例を見つけました。私はそれを実装し始めましたが、問題に遭遇しました。
汎用の CRUD メソッドを作成しようとするため、コードでは dc.Set() をかなり自由に (上記のように) 使用します。ReadCustomer、ReadContact などを使用する代わりに、Read() を実行します。ただし、dc.Set は IDbSet ではなく DbSet を返すため、それをモックすることはできません。
DbContext をモックまたは偽造して、まだ Set 機能を使用できた人はいますか?