tengo el siguiente método:byte [] en LINQ to SQL y en una prueba de unidad que utiliza burlarse
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();
}
Cuando mContext
es una System.Data.Linq.DataContext
todo funciona muy bien. Sin embargo, cuando mContext
es un simulacro en memoria durante mi prueba de unión, la comparación entre e.Password
y hash
siempre devuelve false
.
Si reescribo esta comparación como e.Password.SequenceEqual(hash)
, pasarán las pruebas de mi unidad, pero recibo una excepción cuando hablo con LinqToSql. (System.NotSupportedException:. El operador de consulta 'SequenceEqual' no es compatible)
¿Hay una manera que puedo escribir esta consulta que satisfaga mis pruebas unitarias con una maqueta en memoria, así como el componente de producción con LinqToSql?
+1 - Al principio estaba haciendo lo mismo, pero luego me di cuenta de que podía reducir la solicitud de IO a * 1 * y simplemente comparar las contraseñas con LINQ normal. – TheCloudlessSky