Ste*_*ard 7 testing unit-testing entity-framework
我已经在本文中使用假对象上下文和在EF4中使用POCO的IObjectSet实现了单元测试.
但我不确定如何在我的假对象上下文中实现几个方法进行测试.我在我的对象上下文接口上有CreateQuery和ExecuteFunction方法,因此我可以执行ESQL和存储过程,但我不能(轻松)在我的伪对象上下文中实现它们.
另一种方法是使用我的存储库的测试双,而不是我的对象上下文的两倍,如下所示:
http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/c4921443-e8a3-4414-92dd-eba1480a07ad/
但这意味着我真正的存储库还没有被测试,似乎只是绕过了这个问题.
有人可以提供任何建议吗?
Mar*_*ann 11
据我所知,你试图在同一时间测试太多.保持单一职责原则的初衷.
当我们进行单元测试时,我们使用抽象存储库来抽象数据访问代码,使其远离应用程序的其余部分.从这个角度来看,我们只测试存储库的使用者,而不是任何具体的存储库.这样的消费者应该只关心存储库,而不关心任何"对象背景" - 这将是一个漏洞抽象.
想象一下,您出乎意料地被要求将您的Repository消费者连接到一个完全不同的数据层(例如基于REST的服务).在这种情况下,即使是抽象对象上下文也没有意义.你可能没想到会发生这种情况,但即便如此,仅凭思想实验就是漏水抽象的一个很好的指标.
对象上下文是使用EF的具体Repository实现的实现细节.其他实现可能根本不需要对象上下文.
也就是说,您可能仍希望测试EF实现本身.这可能很有意义,但这是一个不同的单元测试套件,具有完全不同的目的.您现在正在测试存储库的具体实现,而不是测试抽象存储库的使用者.在这种情况下,没有必要通过接口 - 您可以在这里直接与具体类型对话.
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |