使用NHibernate和Repository模式 - 如何处理模拟上下文和过滤表达式

时间:2012-05-21 11:21:03

标签: nhibernate design-patterns moq nhibernate-criteria

我正在使用NHibernate 3的项目,但代码非常混乱。我想做的是:

  • 将测试代码引入项目
  • 介绍Repository模式 - 我是在使用Entity Framework 4的项目中完成的,我很喜欢它,特别是无论使用何种存储都可以测试查询的机会(我可以模拟内部存储并注入内存实现,如List of objects)< / LI>
  • 因为目前DAO代码与CreateCriteria方法一起使用并创建NHibernate特定的查询,所以无法用另一个替换NHibernate存储(或者至少我不知道如何在列表上执行NHibernate.ICriteria因此,我需要一种方法来创建无论存储实现如何都可以使用的查询。

有没有办法实现它?

1 个答案:

答案 0 :(得分:0)

这可能不是你想要的。我们有两种测试:单元测试,它在没有数据库和数据库集成测试的情况下测试纯逻辑。

单元测试

我们有实现查询的类的接口。这样,域没有对NHibernate的任何引用。在您的情况下,这可能是存储库。为它们编写简单的小接口并模拟整个存储库。你甚至不需要NHibernate。这就是persistence ignorance的美丽。

数据库集成测试

我们在Sqlite database in memory上运行NHibernate。这样我们就可以测试依赖于NHibernate的映射,查询和其他东西。