У меня есть следующий метод:
User IDataContext.AuthenticateUser(string userName, string password)
{
byte[] hash = PasswordHasher.HashPassword(userName, password);
var query =
from e in mContext.GetTable<User>()
where e.Email == userName && e.Password == hash
select e;
return query.FirstOrDefault();
}
Когда mContext
является System.Data.Linq.DataContext
, все отлично работает. Однако, когда mContext
является имитацией в памяти во время моего объединяющего тестирования, сравнение между e.Password
и хешем
всегда возвращает false
.
Если я перепишу это сравнение как e.Password.SequenceEqual (hash)
, то мои модульные тесты пройдут, но я получаю исключение, когда говорю с LinqToSql. (System.NotSupportedException: оператор запроса SequenceEqual не поддерживается.)
Есть ли способ, которым я могу написать этот запрос, который удовлетворит мои модульные тесты с помощью макета в памяти, а также производственный компонент с LinqToSql?