0
我寫的擴展方法幫手假數據加載到的DbContext可以派生使用與TypeMock使用泛型的動作WhenCalled
public static void RegisterFakeData<T>(this DbContext databaseContext, ObjectSet<T> action, IEnumerable<T> fakeData) where T : class
{
Isolate.WhenCalled(() => action).WillReturnCollectionValuesOf(fakeData.AsQueryable());
}
這個工作過程所需的,但我不知道是否有可能得到dbcontext上的屬性被傳入(操作參數)從假數據的類型。
所以如果我設置客戶屬性,我只是通過一個客戶列表。
當前使用情況:
Isolate.Fake.StaticConstructor<DbContext>();
var databaseContext = Isolate.Fake.Instance<DbContext>();
databaseContext.RegisterFakeData(databaseContext.Customer, new List<Customer> { new Customer { CustID = "cust1", RegionCode = "region1"}})
所需的使用:
databaseContext.RegisterFakeData(new List<Customer> { new Customer { CustID = "cust1", RegionCode = "region1"}})
我發現的情況下這是行不通的。如果在帶有.ToList()的linq查詢中使用上下文,那麼它可以正常工作,但是如果linq查詢正在訪問查詢中的上下文屬性,那麼它將引發空異常。非常接近,但我不想不必要地使用.ToList()。即:var member =(來自_databaseContext.Customer中的customer,其中customer.CustID == blah select customer)拋出異常。更改爲_databaseContext.Customer.ToList(),它的工作原理,但這並不好。 – 2015-01-08 05:59:46