Moq кэширует возвращаемое значение
Кажется, что Moq - это данные кэширования, которые я установил в качестве возврата. Когда я это сделаю:
var service = new Mock<AlbumService>();
service.Setup(x => x.CreateOne()).Returns(new AlbumService().CreateOne());
он возвращает тот же самый объект, даже если AlbumService.CreateOne() возвращает новый экземпляр альбома.
Можно ли заставить Moq вызывать действие Returns каждый раз, когда я обращаюсь к CreateOne()?
Ответы
Ответ 1
Это должно помочь:
var service = new Mock<AlbumService>();
service.Setup(x => x.CreateOne()).Returns(() => new AlbumService().CreateOne());
Чтобы разработать, метод Returns принимает объект возвращаемого типа или делегат, который будет оценивать тип возвращаемого значения. Делегат вызывается всякий раз, когда вызывается метод издевательства.