代码之家  ›  专栏  ›  技术社区  ›  Brad Heller

NHibernate生成值和测试

  •  2
  • Brad Heller  · 技术社区  · 16 年前

    我用NHibernate来访问数据。我正在为我的数据访问层编写一些测试,并在一个场景中选择特定日期范围内的记录。

    在测试中,我只需选择一个范围内的随机日期就可以生成测试数据,然后我尝试选择日期在该范围内的子集的记录。例如,我生成日期介于昨天和明天之间的记录,然后只选择日期为今天的记录。

    问题是这些日期通常是由DB生成的——它们被设置为 generated="insert" 基本上。有没有一种方法可以设置NHibernate,这样它就可以在用户不提供数据时使用数据库生成的日期?

    1 回复  |  直到 16 年前
        1
  •  0
  •   mattk    16 年前

    将实体上的DateTime属性初始化为日期时间。现在建造时。给它一个受保护的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;
            }
        }
    }