EF4-可能模拟对象context进行单元测试吗?
-
01-10-2019 - |
题
可以在不使用打字机islolator的情况下完成吗?我在网上找到了一些建议,例如仅通过元数据连接字符串传递,但是除了打字机以外,我什么都没有遇到,似乎确实允许使用模拟对象context,可以将其注入用于单元测试的服务。我是为打字机的$$付费,还是有其他选择?没有人能够创建与开源的类型相媲美的任何东西?
解决方案
我正在不嘲笑的情况下轻松地测试EF4。我所做的是使用来自的代码创建一个存储库接口 http://elegantcode.com/2009/12/15/Entity-framework-ef4-generic-repository-and-unit-of-work-work-prototype/ 作为一个基础,我创建了一个 InMemoryRepository<T>
使用的类 IRepository
界面。然后我替换了 IObjectSet<T>
与 List<T>
班级的内部并相应地更改了检索方法。
因此,如果您需要进行单元测试,请传递Inmemoryrepository而不是DataRepository。
其他提示
将您的LINQ2ENTITY查询放在接口后面,单位对其进行隔离测试,以针对真实的数据库进行测试。
使用查询接口的模拟为您的业务逻辑编写测试。不要让Linq流血您的业务逻辑!
不要使用RepositoryPattern!
将ObjectContext包裹在代理类中。然后将其注入您的课程。
我认为存储库模式不是问题的唯一答案(当然可以避免问题)
我喜欢这个答案 - 我认为更适合将测试引入现有代码库 为ObjectContext创建接口
不隶属于 StackOverflow