Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何测试NHibernate';这是限制,不是吗?_C#_Unit Testing_Nhibernate_Nunit_Xunit.net - Fatal编程技术网

C# 如何测试NHibernate';这是限制,不是吗?

C# 如何测试NHibernate';这是限制,不是吗?,c#,unit-testing,nhibernate,nunit,xunit.net,C#,Unit Testing,Nhibernate,Nunit,Xunit.net,我正在尝试测试我的代码。需要测试符合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 an

我正在尝试测试我的代码。需要测试符合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())(返回AbstractCriteria),则无法检查PropertyName和值


在这种情况下我该怎么办?如何针对限制进行测试。不是吗?

例如,您可以测试
ToString()
您的
abstractCriteria
的结果(应该使用嵌套的私有
\u标准

无论如何,我不认为这是个好主意。我可能在这里离题了,但我更愿意测试结果的行为,而不是它的结构,或者测试
ToString()
的结果。主要的一点是(IMHO)代码做什么,而不是它是否符合您对目标数据结构的了解


我想最好设置一个内存中的数据库(我想到的是SqlLite)并在测试集上应用您的限制进行测试。这似乎与NH的测试方式(部分)相似,例如,您可以测试
抽象标准的
结果(应该使用嵌套的私有
\u标准

无论如何,我不认为这是个好主意。我可能在这里离题了,但我更愿意测试结果的行为,而不是它的结构,或者测试
ToString()
的结果。主要的一点是(IMHO)代码做什么,而不是它是否符合您对目标数据结构的了解

我想最好设置一个内存中的数据库(我想到的是SqlLite)并在测试集上应用您的限制进行测试。这似乎与NH的测试方法(部分)相似