我們試圖單元測試依賴於實體框架4.1的代碼。我看過幾篇文章對POCO進行單元測試,但我們希望保留默認的EF管道,以便我們可以輕鬆使用EF Caching Wrapper。使用FakeItEasy針對嵌套實體框架成員進行單元測試
FakeItEasy似乎處理EF摘得好,但我有問題斷言發生了什麼。例如,我有這樣的代碼在我的模型(其中有另一個Email
局部類,它是從EF數據庫第一向導中的自動生成的代碼):
public partial class Email
{
IMyEntities _dataContext;
public Email(IMyEntities myEntities)
{
_dataContext = myEntities;
}
public void SendEmails()
{
// ... code to send emails goes here...
_dataContext.Emails.AddObject(this);
_dataContext.SaveChanges();
}
}
然後在我的單元測試與FakeItEasy:
var context = A.Fake<IMyEntities>();
var email = A.Fake<Email>(context);
// ... code to configure email goes here ...
email.SendEmails();
// this fails with a FakeItEasy.ExpectationException...
A.CallTo(() => context.Email.AddObject(email)).MustHaveHappened();
如何從我的單元測試中知道context.Emails.AddObject
實際上確實被調用?
謝謝!