我們有方法返回一個匹配的數據庫條目,或者如果不存在匹配,則創建條目並返回該條目。使用實體框架。如何測試依賴於數據庫內容的方法?
public Transaction FindOrCreateTransactionByID(string id, DBContext db)
{
Transaction t = db.Transactions.SingleOrDefault(f => f.TransactionID == id);
if(t == null)
{
t = new Transaction { TransactionID = id };
db.Transactions.Add(t);
db.SaveChanges();
}
return t;
}
還有更多的方法比上面,但它應該說明情況。
我們應該試着嘲笑DBContext
嗎?通過DbSet[Transactions]
和模擬,而不是?將方法分解爲Find()
和Create()
而不是?
您是否閱讀過[this](https://msdn.microsoft.com/en-us/library/dn314429.aspx?f=255&MSPPError=-2147217396)文章?你使用哪個版本的EF? –