2010-12-06 70 views
11

似乎像Moq缓存我设置为返回的数据。当我这样做:Moq缓存返回值

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

返回相同对象甚至认为AlbumService.CreateOne()返回新专辑实例。

每次访问CreateOne()时,是否可以使Moq调用返回操作?

回答

13

这应该帮助:

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

要精心,收益法接受的返回类型或将评估的返回类型的委托的对象。每当调用模拟方法时,都会调用委托。