2013-02-21 41 views
5

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

我添加了一个假的组件,用于System.Data.Entity但是当我使用System.Data.Entity .Fakes它说:“无法解析符号‘正版正货’”,虽然我可以访问System.Data.Fakes(但我have't添加System.Data假的组装)

我在我的实体上下文中伪造了其他方法,但由于该方法是从DbContext继承的,因此我无法在我的实体上伪造SaveChanges方法。

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

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

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

+1

我不是垫片的这样的粉丝,尤其是在你的DbContext。我想你可能需要重新考虑你的设计以更好地测试你的代码。检查我的博客文章关于这个问题:http://sitecore.paragon-inc.com/resources/blogs-posts/the-repo-man – IronMan84 2013-02-21 16:51:08

+1

谢谢,但该项目已在生产和设计尚未被认为可以测试,所以我正在努力与我拥有的东西一起工作 – 2013-02-21 16:54:52

回答

2

我已经设法通过在我的BaseRepository类中创建SaveChanges方法并将其用于我所有存储db.SaveChanges的派生存储库中。

然后我shimed我BaseRepository让我SaveChanges方法将无能为力