我正在使用NHibernate进行数据访问。我正在为我的数据访问层编写一些测试,并且我正在选择特定日期范围内的记录。
在测试中,我通过选择范围内的随机日期生成测试数据,然后我尝试选择日期在该范围的子集内的记录。例如,我生成日期和明天之间的日期记录,然后我只选择日期为今天的记录。
问题是这些日期通常由数据库生成 - 它们基本上设置为generated="insert"
。有没有办法设置NHibernate,以便在用户不提供日期时使用DB生成的日期?
如果没有,任何人都有策略在测试过程中减轻这种情况吗?
答案 0 :(得分:0)
在构造实体时,将实体的DateTime属性初始化为DateTime.Now。给它一个受保护的setter,并在你的测试代码中实现一个派生类型,它暴露了一个设置它的方法。
例如
public class RealEntity
{
public virtual int Id { get; private set;}
...
public virtual DateTime Created { get; protected set; }
}
[TestFixture]
public class SomeTest
{
...
public class Testable : RealEntity
{
public void SetCreatedDate(DateTime date)
{
Created = date;
}
}
}