Cómo simular una llamada de método que toma un objeto dinámico

Digamos que tengo lo siguiente:

<code>public interface ISession 
{
   T Get<T>(dynamic filter); }
}
</code>

Y tengo el siguiente código que quiero probar:

<code>var user1 = session.Get<User>(new {Name = "test 1"});
var user2 = session.Get<User>(new {Name = "test 2"});
</code>

¿Cómo me burlaría de esta llamada?

Usando Moq, me cansé de hacer esto:

<code>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});
</code>

Y eso no funcionó. Los resultados devueltos son nulos.

También intenté hacer lo siguiente con Rhino Mocks:

<code>var session = MockRepository.GenerateStub<ISession>();
session.Stub(x => x.Get<User>(new {Name = "test 1"})).Return(new User{Id=1});
</code>

Tampoco hay suerte. Nulo otra vez.

Entonces, ¿cómo haría esto?

Gracias,

Respuestas a la pregunta(3)

Su respuesta a la pregunta