Мне интересно, как обойти это. Я использую nhibernate и свободно.Единичное тестирование и nhibernate?
У меня есть класс домен, как этот
public class User
{
public virtual int UserId {get; private set;}
}
это, кажется, соглашение, делая NHibernate, как он останавливает людей от установки и идентификатор, как это автоматически генерируется.
Теперь проблема возникает, когда я тестирую устройство.
У меня есть весь мой код nhibernate в репо, который я издеваюсь, поэтому я только тестирую свой сервисный уровень. Проблема возникает, когда это происходит.
User user = repo.GetUser(email);
Это должно вернуть объект пользователя.
Так что я хочу использовать MOQ сделать это
repo.Setup(x => x.GetUser(It.IsAny<string>())).Return(/* UserObject here */)
теперь вот проблема
мне нужно сделать этот пользовательский объект и поместить его в возвращенной части.
Так что я хотел бы сделать что-то вроде
User user = new User()
{
UserId = 10,
}
Но здесь проблема заключается Мне нужно установить Id, потому что я на самом деле использовать его в дальнейшем, чтобы сделать некоторые LINQ на некоторых коллекциях (в слое услуг как он не попадает в мой db, поэтому он не должен быть в моем репо), поэтому мне нужно его установить, но я не могу установить его, потому что это частный набор.
Итак, что мне делать? Должен ли я просто удалить частный или есть какой-то другой способ?
Благодаря это работает только в совершенстве. У меня могут быть симптомы с номером 2. Ему просто нужно было издеваться над такими вещами. Я пытаюсь сохранить это только то, что мне нужно проверить. Например, я не маскирую имя пользователя для пользователя, так как оно не используется в методе. Я хотел бы попробовать autofixture moq, но я не могу понять, как на самом деле использовать, и, похоже, на нем нет реальных обучающих программ, поэтому я не могу определить, поможет ли это мне или нет. – chobo2