我很欣赏这里已经有很多实体框架测试问题。但是,我遇到了Effort,它允许数据库上下文的内存版本。我想我对这个领域有几个问题:
使用这种方法的优缺点是什么?
我认为 EF 和内存数据库使用存储库和工作单元模式,这是否意味着我们在使用这种方法时不实现自己的?
还有其他选项,例如提供假 IDBSet、使用 SQL CE 或实现存储库和工作单元模式,我是否更好地使用这些技术之一?
我对这里的选择量感到有点不知所措。我意识到可能没有灵丹妙药,但希望得到一些指导。
谢谢
我很欣赏这里已经有很多实体框架测试问题。但是,我遇到了Effort,它允许数据库上下文的内存版本。我想我对这个领域有几个问题:
使用这种方法的优缺点是什么?
我认为 EF 和内存数据库使用存储库和工作单元模式,这是否意味着我们在使用这种方法时不实现自己的?
还有其他选项,例如提供假 IDBSet、使用 SQL CE 或实现存储库和工作单元模式,我是否更好地使用这些技术之一?
我对这里的选择量感到有点不知所措。我意识到可能没有灵丹妙药,但希望得到一些指导。
谢谢
1)专业人士:您可以测试您的 DAL 功能是否实际工作,您不需要花费很长时间模拟存储库,只要您实例化它可以更快地运行测试(大型项目的小时数)。缺点:您实际上并没有测试您的实际数据库 - 违背了集成测试的要点。更改数据库也是一个配置字符串。稍后编辑:我曾经进行过大量的单元测试,现在我更喜欢垂直切片。我发现,当我关心数据库时,无论如何我都需要进行集成测试。
就我个人而言,我是端到端测试的粉丝,因为它使测试保持专注 - 减少数量并根据规范进行实际测试。
2) uow 和存储库模式促进不同的事情。存储库封装了 DAL,并且应该从 db 提供者本身抽象出来——通常是通过工作单元模式。工作单元本质上为您提供了事务访问权限,并且应该为您提供在测试时使用内存数据库的钩子。所以我个人并不觉得它们没用。当你想测试和模拟你的 dal (比如一个小单元测试而不是验收/集成)时,repro 模式会为自己买单。没有它你能逃脱吗?可能,但是拥有它的成本很小,而且还使一切都井井有条。
3)不知道这不是任何人都可以为您回答的。和他们一起玩。