可以在不使用TypeMock Islolator的情况下完成吗?我在网上找到了一些建议,比如传递一个只有元数据的连接字符串,但是除了TypeMock之外我没有遇到任何东西似乎真的允许一个模拟的ObjectContext,它可以注入服务进行单元测试。我是不是为了TypeMock而追上了$$,还是有其他选择?没有人设法创建任何可与开源的TypeMock相媲美的东西吗?
答案 0 :(得分:4)
我无需嘲笑即可轻松对EF4进行单元测试。我所做的是使用http://elegantcode.com/2009/12/15/entity-framework-ef4-generic-repository-and-unit-of-work-prototype/中的代码创建存储库接口作为基础然后我创建了一个使用InMemoryRepository<T>
接口的IRepository
类。然后我用类IObjectSet<T>
替换了List<T>
,并相应地更改了检索方法。
因此,如果您需要进行单元测试,请传入InMemoryRepository而不是DataRepository。
答案 1 :(得分:3)
将Linq2Entity查询放在接口后面,单独测试它与真实数据库隔离。
使用您的查询接口的模拟为您的业务逻辑编写测试。不要让Linq流入你的业务逻辑!
不要使用RepositoryPattern!
答案 2 :(得分:1)
将ObjectContext包装在代理类中。然后将其注入你的课程。
答案 3 :(得分:0)
我不认为存储库模式是问题的唯一答案(它确实避免了问题)
我喜欢这个答案 - 我认为更适合将测试引入现有代码库Creating Interface for ObjectContext