2017-09-26 3 views
2

Je veux installer mon faux comme ceci:FakeItEasy objet de retour que la méthode est appelée avec

A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ); 

XYZ est la même variable que a été inséré à A<PersonModel>._

donc si Create est appelée avec mySamplePersonModel Je veux que la méthode retourne mySamplePersonModel.

Comment puis-je y parvenir?

Merci à l'avance

Répondre

2

La solution à votre question d est correct. Il y a une alternative qui est un peu plus lisible IMO:

A.CallTo(() => repository.Create(A<PersonModel>._)).ReturnsLazily((PersonModel p) => p); 
2

Je trouve la réponse que vous pouvez capturer des arguments comme ceci:

A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => x.Arguments.Get<PersonModel>(0)); 

Et vous pouvez même modifier ce paramètre comme ceci:

A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => 
      { 
       var personModel = x.Arguments.Get<PersonModel>(0); 
       personModel.Name = "aName"; 
       return personModel; 
      }); 

Si quelqu'un a un solution plus élégante, n'hésitez pas à le poster :-)