我正在创建一个调用创建任务方法的单元测试。 create task方法调用了一些模拟的外部对象,这些对象是我测试的目的,但是在我测试的方法内部,还有一个SaveChanges
调用可以保存我的任务。
我想做的是将DbContext
内的System.Data.Entity
类填充为shim,以便SaveChanges
方法不再访问数据库。
我为System.Data.Entity
添加了一个假程序集,但是当我使用System.Data.Entity
时,虽然我可以访问System.Data.Fakes
,但它写着“无法解析符号'Fakes'”(但我没有为System.Data添加一个假程序集)。
我在实体上下文中伪造了其他方法,但是由于该方法是从DbContext继承的,因此无法在我的实体上伪造SaveChanges方法。
ShimDBEntities.AllInstances.SaveChanges = (x) => { ... };
上面的代码块显示“无法解析符号'SaveChanges'”。
那么,如何使用Microsoft Fakes来填充DbContext?
最佳答案
我已经通过在SaveChanges
类中创建一个BaseRepository
方法并在所有我有db.SaveChanges
的派生存储库中使用了该方法来做到这一点。
然后我给BaseRepository
填充了填充,以便SaveChanges
方法不执行任何操作
关于c# - 如何使用Microsoft Fakes伪造DbContext?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15007766/