Moq кэширует возвращаемое значение

Кажется, что Moq - это данные кэширования, которые я установил в качестве возврата. Когда я это сделаю:

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

он возвращает тот же самый объект, даже если AlbumService.CreateOne() возвращает новый экземпляр альбома.

Можно ли заставить Moq вызывать действие Returns каждый раз, когда я обращаюсь к CreateOne()?

1 ответ

Это должно помочь:

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

Чтобы разработать, метод Returns принимает объект возвращаемого типа или делегат, который будет оценивать тип возвращаемого значения. Делегат вызывается всякий раз, когда вызывается метод издевательства.

licensed under cc by-sa 3.0 with attribution.