So verspotten Sie einen Methodenaufruf, der ein dynamisches Objekt übernimmt

Angenommen, ich habe Folgendes:

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

Und ich habe den folgenden Code, den ich testen möchte:

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

Wie würde ich diesen Anruf verspotten?

Mit Moq habe ich es satt:

<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>

Und das hat nicht funktioniert. Die zurückgegebenen Ergebnisse sind null

Ich habe auch Folgendes mit Rhino Mocks versucht:

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

Auch kein Glück. Wieder Null.

Wie würde ich das machen?

Vielen Dank,

Antworten auf die Frage(3)

Ihre Antwort auf die Frage