Я пытаюсь написать интеграционный тест для своего репозитория, но я не могу найти хороший способ утверждать, что результаты - это то, чего я хочу.
У меня есть класс со статическими свойствами длявсе мои тестовые данные - проекты, пользователи и т. д. В настройках моего теста я вставляю все эти объекты в свою базу данных с помощью NHibernate (и я смог убедиться, что это работает - записи там, как они должны после установкизавершено).
Мой репозиторий (немного упрощенный) делает это:
public IEnumerable<MyEntity> GetEntitiesByProjectID(id)
{
return session.Linq<MyEntity>().Where(e => e.Project.ID == id).ToList();
}
В моем тесте я пытаюсь утверждать, что результаты верны, как в примере кода ниже, ноколлекции не эквивалентны по нескольким причинам - первичная, которая ссылается на другие объекты, заменяется прокси-замками (Castle.Proxies.UserProxy
вместо User
).
Assert.AreElementsEqualIgnoreOrder(
Data.MyEntites.Where(e => e.Project.ID == 1), results)
Есть и некоторые другие странности, напримерспособ отображения даты и времени.В моих типах .NET строковые представления datetime - 2011-07-05T14:28:11.5655935+02:00
, а из базы данных - 2011-07-05T14:28:11.0000000
, то есть без индикатора часового пояса.
По проверке я могу убедиться, что хранилище действительно полученоправильные элементы, так что мой тест явно проверяет не то.
Что я здесь не так делаю?