【发布时间】:2013-02-20 16:11:51
【问题描述】:
我已经阅读了很多关于实体框架的单元/集成测试的 SO 链接,如果我没有误解的话,总结一下:
当存储库接口公开 IQueryable 时,我必须进行集成测试(单元测试还不够),因为作为 linq 到实体的 IQueryable 可以变成 linq 到对象查询,它的行为完全不同,只能测试有一个真实的数据库。
当存储库接口仅公开 IEnumerable 或 List 时,对存储库进行单元测试就足够了。
我知道在我的服务中编写一个 IQueryable 而不添加许多新的接口方法会非常酷...
但如果上述情况属实,并且我想尽可能避免集成测试......
你怎么看?
【问题讨论】:
-
我不同意如果您通过存储库公开 IQueryable 结果必须使用 Db 连接测试它们的断言。更大的问题是你想要练习什么代码?您是要测试存储库中的业务逻辑(开始时不应包含太多业务逻辑),还是要测试数据库结构是否支持 EF 基于您的模型生成的查询?
-
我的存储库包含零业务逻辑,因此我有一个服务。我想要你提到的后者。
标签: entity-framework