Модульное тестирование и nhibernate?

Мне интересно, как это обойти. Я использую nhibernate и fluent.

У меня есть такой предметный класс

public class User
{
   public virtual int UserId {get; private set;}
}

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

Теперь возникает проблема. когда я занимаюсь модульным тестированием.

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

User user = repo.GetUser(email);

это должно вернуть объект пользователя.

Итак, я хочу использовать moq для этого

repo.Setup(x => x.GetUser(It.IsAny<string>())).Return(/* UserObject here */)

теперь вот проблема

Мне нужно создать этот объект User и поместить его в части возврата.

Итак, я бы сделал что-то вроде

User user =  new User()
{
   UserId = 10,
}

Но вот в чем проблема. Мне нужно установить Id, потому что я фактически использую его позже, чтобы выполнить некоторую linq для некоторых коллекций (на уровне обслуживания, поскольку он не попадает в мои db, поэтому его не должно быть в моем репо), поэтому мне нужно установить его, но я не могу установить его, потому что это частный набор.

Итак, что мне делать? Мне просто удалить частный или есть другой способ?

9
задан Daniel Bidulock 21 August 2012 в 19:59
поделиться