У меня есть репозиторий, который я издевался с использованием Moq.Смысл репозитория и вопрос обратного вызова
У меня есть служба, которую я издевался. Служба ожидает репозиторий в своем конструкторе, и я успешно смог это сделать.
Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу, чтобы репозиторий не подключался к БД, а вместо этого использовал хранилище в памяти для запроса/выполнения операций.
, если я это сделать:
userMockRepository.Setup(r => r.Login(It.IsAny<string>(), It.IsAny<string>()))
.Returns((User u) => users.Find(p => p.Password == u.Password &&
p.Username == u.Username));
затем запустить тест, я получаю исключение:
Количество параметров рассогласования
когда Сервисный метод который вызывается, когда о для вызова входа в UserRepository.
Что я делаю неправильно? Я не понимаю?
По существу любые Repository вызовы должны быть переадресованы или запрос против в сборе памяти (т.е. список)
это мой фактический метод обслуживания слой:
var user = uoWContext.UserRepository.Login(request.Username, request.Password);
if (user == null)
{
response.Success = false;
response.FailureInformation = "Invalid username or password";
}
return response;
Когда он попадает в линию uowContext.UserRepository.Login(...)
- это где я получаю исключение.
Ах! Спасибо .. –
Еще один - когда у меня есть резервное хранилище списка, и я настраиваю метод для выполнения обратного вызова, добавляя элемент в коллекцию - при следующем добавлении элемента я вижу, что не было элементы, добавленные ранее в коллекцию. Как мне сделать так, чтобы сборник сохранялся в модульных тестах? У меня есть репозиторий и IQueyable , если это помогает. (Контекст: AddItem) –
@Ahmed: попытайтесь объявить список, в который вы добавляете элементы не внутри выражения лямбда, а во внешней области видимости, то есть в качестве переменной внутри тестового метода. – abatishchev