使用EF Entry实现单元测试?

时间:2014-09-24 21:37:27

标签: c# entity-framework-6 rhino-mocks

我在实体框架代码优先实施单元测试时遇到问题。我一直在使用这个微博 http://msdn.microsoft.com/en-us/data/dn314431.aspx作为指南,我已经设法完美地实现了所有内容并且具有正在运行的操作(插入,查询) 在例子中指定。我有一个问题,但有更新操作。我的方法包含以下行:

ctx.Entry(ws).Property(w => w.IsDeleted).IsModified = true;

这负责将属性标记为已修改。问题是我的上下文不支持作为DbEntityEntry一部分的Entry方法的实现,并且不知道如何在我的测试方法上模拟更新。

我正在使用Rhino Mocks进行测试。

1 个答案:

答案 0 :(得分:2)

稍微解决了这个问题。对我来说最好的解决方案是提升间接水平(来自this thread on SO)。 这个想法如下:

ctx.Entry(ws).Property(w => w.IsDeleted).IsModified = true;

转换为以下调用:

ctx.SetModified(ws);

...
// Real context implementation
public void SetModified(object entity)
{
    this.Entry(entity).State = System.Data.Entity.EntityState.Modified;
}

你可以做任何你需要做的事情"更新"模拟实现中的实体。祝你好运单元测试EF代码;)

相关问题