【问题标题】:How do I test NHibernate's Restrictions.Not?如何测试 NHibernate 的 Restrictions.Not?
【发布时间】:2013-10-23 07:25:17
【问题描述】:

我正在尝试测试我的代码。需要测试与 NHibernate 标准一起使用的模块的功能。例如,这是我的单元测试之一。

[Fact]
public void test_name()
{
  var criteria = ... // creates mock criteria
  MyModule.DoWork(criteria); // adds restrictions to criteria

  Assert.True(/* check if criteria.Add() was called
  and what arguments were passed */);
}

如果 MyModule.DoWork() 添加了 Restrictions.Eq() 没有问题,因为它返回一个 SimpleExpression,我可以检查 expression.PropertyName 和 expression.Value。但如果改为添加 Restrictions.Not(Restrictions.Eq()) (返回 AbstractCriterion),则无法检查 PropertyName 和 Value。

在这种情况下我该怎么办?如何针对 Restrictions.Not 进行测试?

【问题讨论】:

    标签: c# unit-testing nhibernate nunit xunit.net


    【解决方案1】:

    例如,您可以测试您的AbstractCriterionToString() 结果(应该是NotExpression 和嵌套的私有_criterion

    无论如何,我不认为这是一个好主意。我可能在这里跑题了,但我宁愿测试结果的行为而不是其结构或ToString() 的结果。重点是(恕我直言)代码的作用,而不是它是否符合您对目标数据结构的了解。

    我想最好设置一个内存数据库(想到 SqlLite)并测试将您的限制应用于测试集。它似乎类似于(部分)NH 的测试方式https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多