Como burlar uma chamada de método que usa um objeto dinâmico

Digamos que eu tenha o seguinte:

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

E eu tenho o seguinte código que quero testar:

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

Como eu iria zombar dessa ligação?

Usando o Moq, eu me cansei fazendo isso:

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

E isso não funcionou. Os resultados retornados são nulos

Eu também tentei fazer o seguinte com o Rhino Mocks:

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

Nenhuma sorte também. Nulo novamente.

Então, como eu faria isso?

Obrigado,