для модульного тестирования моего asp.net MVC-веб-приложения, я хотел бы высмеять мой IGenericRepository (я использую Moq).Отказывание общего метода репозитория
Метод, который должен быть издевались выглядит так:
IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
Я уже высмеял хранилище без каких-либо проблем:
useraccountRepository = new Mock<IGenericRepository<Useraccount>>();
Теперь я хотел бы сказать, что когда Moq вызывается метод Get моего интерфейса, должен быть возвращен список пользовательских учетных записей:
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email && u.Password == useraccount.Password)).Returns(useraccounts);
I thi nk есть ошибка в моей второй лямбда, потому что эта работа работает:
useraccountRepository.Setup(r => r.Get(null, null, "")).Returns(useraccounts);
Но где моя ошибка?
Что работает:
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email
&& u.Password == useraccount.Password, null, "")).Returns(useraccounts);
Похоже значений параметра по умолчанию не применяются в моей издеваться. Почему это?
Если я использую
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email
&& u.Password == useraccount.Password, null, "")).Returns(useraccounts);
в любом случае, то метод в мой контроллер генерирует исключение, когда Get сообщение называется:
private bool validateUser(Useraccount useraccount)
{
try
{
Useraccount useraccountLogin = UnitOfWork.UseraccountRepository.Get(
u => u.Email == useraccount.Email && u.Password == useraccount.Password).Single<Useraccount>();
return (useraccountLogin != null);
}
catch (Exception exc)
{
return false;
}
}
Где мои ошибки?
Заранее спасибо. Michael
** Что ** не работает и ** которое ** исключение выбрано? Вы ориентируетесь по специфике, как профи ... –
Извините за то, что вы сбиваете с толку. Если внутри моего модуля проверяется метод validateUser (...) - метод (изнутри метода контроллера), он генерирует исключение, в котором вызывается UseraccountRepository.Get (...): [System.InvalidOperationException] = {" Последовательность не содержит элементов"}. "в System.Linq.Enumerable.Single [TSource] (источник IEnumerable1) \ r \ n at ...". – mosquito87