2010-12-06 35 views
11

On dirait que Moq est la mise en cache des données que j'ai configurées comme retour. Quand je fais cela:Les caches Moq renvoient la valeur

var service = new Mock<AlbumService>(); 
service.Setup(x => x.CreateOne()).Returns(new AlbumService().CreateOne()); 

retourne retourne la même nouvelle instance Album objet même pensé AlbumService.CreateOne().

Est-il possible de faire en sorte que Moq appelle l'action de retour chaque fois que j'accède à CreateOne()?

Répondre

13

Cela devrait aider:

var service = new Mock<AlbumService>(); 
service.Setup(x => x.CreateOne()).Returns(() => new AlbumService().CreateOne()); 

Pour élaborer, la méthode déclarative accepte un objet du type de retour ou un délégué qui évaluera le type de retour. Le délégué est appelé chaque fois que la méthode simulée est invoquée.