Мне интересно, как это обойти. Я использую 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, поэтому его не должно быть в моем репо), поэтому мне нужно установить его, но я не могу установить его, потому что это частный набор.
Итак, что мне делать? Мне просто удалить частный или есть другой способ?