Для чего используется Mock.Setup().Verifiable()?

308
24 ноября 2017, 04:35

Не могу разобраться для чего используется Mock.Verifiable(), если я правильно понимаю, такой код:

var mockContainer = new Mock<CloudBlobContainer>(MockBehavior.Strict, StorageUri);
mockContainer.Setup(c => c.GetBlockBlobReference(It.IsAny<string>()))
             .Returns(mockBlobItem.Object);
// ...
mockContainer.Verify(c => c.GetBlockBlobReference(It.IsAny<string>()), Times.AtLeastOnce);

Будет эквивалентен такому:

var mockContainer = new Mock<CloudBlobContainer>(MockBehavior.Strict, StorageUri);
mockContainer.Setup(c => c.GetBlockBlobReference(It.IsAny<string>()))
             .Returns(mockBlobItem.Object)
             .Verifiable();
// ...
mockContainer.Verify();

Моё понимание верно?

Answer 1

Да Вы всё верно поняли.

Насколько можно судить из статьи этот метод может быть использован для проверки вызова ранее вызова метода определённого в Setup.

var thing = new Thing() { Id = 1 };  
var mockMapper = new Mock<IThingMapper>();  
mockMapper.Setup(p => p.Save(thing)).Verifiable();
// do stuff
mockMapper.Verify();  

Кроме того согласно англоязычного ответа желательно не использовать этот подход т.к. он явно противоречит паттерну AAA.

READ ALSO
Отчёт из двух выборок данных

Отчёт из двух выборок данных

ЗдравствуйтеЕсть отчёт

294
Неверное содержимое .json файла

Неверное содержимое .json файла

Есть массив объектов класса Vector который нужно сериализоватьСодержимое json файла:

302
Изменение представления DataGrid

Изменение представления DataGrid

Доброго времени суток, Всем! Недавно стал изучать WPF, для меня это все ново, так что не обессудьте

231
Сетевое программирование. Сервер на C#

Сетевое программирование. Сервер на C#

Здравствуйте! Год с лишним изучаю C#, писал проекты на WF, Unity3Dдело дошло до сетевого программирования

470