Сравнение байта [] в LINQ- to-SQL и в модульном тесте, который использует имитацию

У меня есть следующий метод:

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?

7
задан Ani 19 September 2010 в 01:37
поделиться