NHibernate Генерируемые значения и тестирование - PullRequest
2 голосов
/ 20 июня 2010

Я использую NHibernate для доступа к данным. Я работаю над написанием некоторых тестов для своего слоя доступа к данным, и у меня есть сценарий, в котором я выбираю записи в определенном диапазоне дат.

В тесте я генерирую тестовые данные, просто выбирая случайные даты в пределах диапазона, а затем пытаюсь выбрать записи с датами в подмножестве этого диапазона. Например, я генерирую записи с датами между вчерашним и завтрашним днем, а затем выбираю только те записи, которые имеют сегодняшнюю дату.

Проблема в том, что эти даты обычно генерируются БД - в основном они установлены на generated="insert". Есть ли способ настроить NHibernate таким образом, чтобы он использовал сгенерированную БД дату, когда пользователь не предоставил ее?

Если нет, у кого-нибудь есть стратегия смягчения этого во время тестирования?

1 Ответ

0 голосов
/ 28 июля 2010

Инициализируйте свойство DateTime вашей сущности в DateTime.Now, когда оно будет создано. Дайте ему защищенный установщик и в своем тестовом коде реализуйте производный тип, который предоставляет метод для его установки.

например

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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...