【发布时间】:2011-08-20 04:05:14
【问题描述】:
我们正在尝试对依赖于 Entity Framework 4.1 的代码进行单元测试。我看过几篇针对 POCO 实施单元测试的帖子,但我们希望保留默认的 EF 管道,以便我们可以轻松使用 EF Caching Wrapper。
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 确实被调用了?
谢谢!
【问题讨论】:
标签: unit-testing entity-framework-4 entity-framework-4.1 fakeiteasy