2010-12-06 10 views
11

Parece que Moq está almacenando en caché los datos que configuré como devolución. Cuando hago esto:Moq caches return value

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

vuelve el mismo objeto incluso pensó AlbumService.CreateOne() devuelve nueva instancia del álbum.

¿Es posible hacer que Moq llame a la Acción de devoluciones cada vez que accedo a CreateOne()?

Respuesta

13

Esto debería ayudar:

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

Elaborar, el método devuelve acepta un objeto del tipo de retorno o un delegado que evaluará el tipo de retorno. El delegado se invoca cada vez que se invoca el método simulado.