【问题标题】:Mocking and DetachedCriteria in unit tests单元测试中的 Mocking 和 DetachedCriteria
【发布时间】:2009-07-09 20:40:22
【问题描述】:

您将如何测试以下代码?

public IList<T> Find(DetachedCriteria criteria)
{      
    return criteria.GetExecutableCriteria(session).List<T>();
}

我想模拟 NH 实现(例如为 ISession、ISessionFactory 等设置模拟),但我遇到了这个问题。

【问题讨论】:

    标签: unit-testing nhibernate mocking repository


    【解决方案1】:

    您不应该真正测试它,因为那将是测试 NHibernate。事实上,您可以在 NH 源代码本身中看到非常相似的单元测试。

    如果您想测试使用此代码的其他代码,您可以按以下方式存根:

    Db.Stub(x => x.Find(Arg<DetachedCriteria>.Is.Anything))).Return(new List<Blah>{new Blah()});
    

    根据我的经验,如果您想测试您的查询(例如构建 DetachedCriteria 的查询),您最好使用 SQLite 之类的内存数据库,或者更好的是,使用真正的 SQL Server 实例(或 SQL Server内存中的 CE)。

    【讨论】:

    • 我正在测试存储库实现本身。你是对的,这里没有什么要测试的,它将测试 NHibernate,我可能应该专注于测试查询。谢谢!
    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2023-03-29
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多