У меня есть следующий метод:
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
и hash
всегда возвращает false
.
Если я переписываю это сравнение как e.Password.SequenceEqual(hash)
, тогда мои модульные тесты пройдут, но я получаю исключение, когда говорю с LinqToSql. (System.NotSupportedException: оператор запроса 'SequenceEqual' не поддерживается.)
Есть ли способ, которым я могу написать этот запрос, который будет удовлетворять моим модульным тестам с макетом в памяти, а также производственным компонентом с LinqToSql?