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,