Платформа для имитации ведет себя так, как задумано.
Вы вызываете команду "Подтвердить" на члене, который не был вызван. Вот почему вы получаете ошибку в показанном вами примере.
mock.SetupSet(foo => foo.Name = "foo"); //<--Setup expectation
mock.VerifySet(foo => foo.Name = "foo"); //<--Verify expectation
Поскольку установка указывает, что среда моделирования должна ожидать определенного поведения, но
Не выполняется никаких вызовов.
, как указано в сообщении об ошибке
Ожидаемый вызов на макет хотя бы один раз, но так и не был выполнен: foo => foo.Name = "foo"
Тем не менее, методы Verify*
как обычно вызывается в фазе Assert тестового случая. К тому времени имитация использовалась бы в качестве зависимости каким-либо испытуемым субъектом, и смоделированный элемент вызывался, как и ожидалось, при выполнении испытуемого предмета.
//Arrange
//...initialize mock...
mock.SetupSet(foo => foo.Name = "foo"); //<--Setup expectation
//Act
//...subject under test uses mock
//Assert
mock.VerifySet(foo => foo.Name = "foo"); //<--Verify expectation
Просмотрите Быстрый запуск MOQ: проверка для большего количества примеров.