如何使用Microsoft Fakes来填充DbContext?

时间:2013-02-21 16:47:23

标签: c# entity-framework testing mocking

我正在创建一个调用创建任务方法的单元测试。 create task方法调用一些模拟的外部对象,这是我测试的目的,但在我测试的方法中,还有一个SaveChanges调用来保存我的任务。 我想要做的是在DbContext内填充System.Data.Entity类,以便SaveChanges方法不再访问数据库。

我为System.Data.Entity添加了一个假装配,但是当我使用System.Data.Entity时。伪造它说“无法解析符号'假'',尽管我可以访问System.Data.Fakes(但我有没有为System.Data添加假组件

我在我的实体上下文中伪造了其他方法,但我不能在我的实体上伪造SaveChanges方法,因为该方法是从DbContext继承的。

ShimDBEntities.AllInstances.SaveChanges = (x) => { ... };   

上面的代码块说“无法解析符号'SaveChanges'”。

那么如何使用Microsoft Fakes来填充DbContext?

1 个答案:

答案 0 :(得分:2)

我设法通过在SaveChanges类中创建BaseRepository方法并在我拥有db.SaveChanges的所有派生存储库中使用它来实现此目的。

然后我给我的BaseRepository打了电话,以便我的SaveChanges方法无效