Cómo simular una llamada de método que toma un objeto dinámico
Digamos que tengo lo siguiente:
public interface ISession
{
T Get<T>(dynamic filter); }
}
Y tengo el siguiente código que quiero probar:
var user1 = session.Get<User>(new {Name = "test 1"});
var user2 = session.Get<User>(new {Name = "test 2"});
¿Cómo me burlaría de esta llamada?
Usando Moq, me cansé de hacer esto:
var sessionMock = new Mock<ISession>();
sessionMock.Setup(x => x.Get<User>(new {Name = "test 1")).Returns(new User{Id = 1});
sessionMock.Setup(x => x.Get<User>(new {Name = "test 1")).Returns(new User{Id = 2});
Y eso no funcionó. Los resultados devueltos son nulos.
También intenté hacer lo siguiente con Rhino Mocks:
var session = MockRepository.GenerateStub<ISession>();
session.Stub(x => x.Get<User>(new {Name = "test 1"})).Return(new User{Id=1});
Tampoco hay suerte. Nulo otra vez.
Entonces, ¿cómo haría esto?
Gracias,