我在实体框架代码优先实施单元测试时遇到问题。我一直在使用这个微博 http://msdn.microsoft.com/en-us/data/dn314431.aspx作为指南,我已经设法完美地实现了所有内容并且具有正在运行的操作(插入,查询) 在例子中指定。我有一个问题,但有更新操作。我的方法包含以下行:
ctx.Entry(ws).Property(w => w.IsDeleted).IsModified = true;
这负责将属性标记为已修改。问题是我的上下文不支持作为DbEntityEntry一部分的Entry方法的实现,并且不知道如何在我的测试方法上模拟更新。
我正在使用Rhino Mocks进行测试。
答案 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代码;)