为单元测试模拟nhibernate getNamedQuery的正确方法

本文关键字:方法 getNamedQuery 单元测试 模拟 nhibernate | 更新日期: 2023-09-27 18:26:58

我设置了一个命名查询,用于针对我的Oracle DB:调用存储过程

<sql-query name="GetClientRegCode">
{ call get_registration_code(:in_param1, :in_param2, :in_param3) }

我在代码中这样称呼它:

var regCodeData = _sessionManager.GetSession().GetNamedQuery("GetClientRegCode")
                            .SetParameter("in_param1", p1)
                            .SetParameter("in_param2", p2)
                            .SetParameter("in_param3", p3)
                            .List<object[]>()
                            .ToList();

我已经能够嘲笑我的会话管理器GetSession()。如何嘲笑NamedQuery GetClientRegCode?

为单元测试模拟nhibernate getNamedQuery的正确方法

不要这样做。针对数据访问层编写集成测试。在"更高"的层中,使用fake/mok/stub作为数据访问层。

不要嘲笑你不拥有的