Estoy queriendo crear un test sobre una expresión lambda. Más específicamente, sobre entity framework.
Tengo una clase que oficia de repositorio y la misma posee un método recibe el id de un cliente y devuelve el objeto cliente encontrado que posea ese id.
Esta es la clase:
public class RepositorioClientes
{
private readonly IContexto contexto;
public RepositorioClientes( IContexto contexto )
{
this.contexto = contexto;
}
public Cliente ObtenerPorId( int idBuscado )
{
return this.contexto.Clientes.Where( x => x.Id == idBuscado ).FirstOrDefault();
}
}
Lo que no me convence de mi test, es que yo puedo cambiar la expresión lambda (extendiéndola) y el test seguiría dando verde porque no valido que la expresión que se ejecuta es:
x => x.Id == variable
[TestMethod]
public void ObtenerPorIdTest()
{
int idBuscado = 123;
List<Cliente> stubClientes = new List<Cliente>();
stubClientes.Add( new Cliente() { Id = 123 } );
IDbSet<Cliente> mockClientes = MockRepository.GenerateStrictMock<IDbSet<Cliente>>();
mockClientes.Expect( m => m.Provider ).Repeat.Once().Return( stubClientes.AsQueryable().Provider );
mockClientes.Expect( m => m.Expression ).Repeat.Once().Return( stubClientes.AsQueryable().Expression );
IContexto mockContexto = MockRepository.GenerateStrictMock<IContexto>();
mockContexto.Expect( m => m.Clientes ).Repeat.Once().Return( mockClientes );
RepositorioClientes repositorio = new RepositorioClientes( mockContexto );
Clienteactual = repositorio.ObtenerPorId( idBuscado );
Assert.AreEqual( 123, actual.Id );
mockContexto.VerifyAllExpectations();
}
Espero haber sido claro en mi duda.
Desde ya, muchas gracias.