2010-12-06 63 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()); 

要精心,收益法接受的返回類型或將評估的返回類型的委託的對象。每當調用模擬方法時,都會調用委託。