Entity Framework 4.1 に依存するコードの単体テストを試みています。POCO に対する単体テストを実装する投稿をいくつか見てきましたが、EF Caching Wrapperを簡単に使用できるように、デフォルトの EF 配管を保持したいと考えています。
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
実際に呼び出された単体テストからどのように知ることができますか?
ありがとうございました!