Moq Verify не проверяет, был ли вызван метод - PullRequest
0 голосов
/ 11 августа 2011

Привет, я получаю ошибку, и я не понимаю, почему

        [SetUp]
        public void Setup()
        {
            visitService = new Mock<IVisitService>();
            visitRepository = new Mock<IVisitRepository>();
            visitUIService = new VisitUIService(visitRepository.Object, visitService.Object);
        }

        [Test]
        public void  VisitUIService_CanSoftDelete()
        {
            Mock<IVisitEntity> mockVisitEntity = new Mock<IVisitEntity>();

            visitService = new Mock<IVisitService>();
            visitRepository.Setup(x => x.GetVisitsByDocumentLineItems(It.IsAny<IEnumerable<int>>())).Returns(new List<IVisitEntity>() { mockVisitEntity.Object});

            visitUIService.DeleteVisits(new VisitDeletionModel());

            visitService.Verify(x => x.SoftDeleteVisit(It.IsAny<IVisitEntity>()),Times.AtLeastOnce());
        }

Вызов не был выполнен на макете: x => x.SoftDeleteVisit (IsAny ())

Я не могу это исправить, я добавил visitService.Setup (x => x.SoftDeleteVisit (mockVisitEntity.Object)). Verifiable ();и несколько других вариантов параметров, но не повезло

спасибо

1 Ответ

0 голосов
/ 11 августа 2011

Я думаю, что проблема в том, что объект-потребитель visitUIService уже инициализирован с помощью начальных макетов интерфейсов, а настройка, которую вы выполняете позже, бесполезна.

Два подхода:

a) переместить инициализацию класса в тест, т. Е. После настройки интерфейса

б) Ленивый Загрузите макеты следующим образом, но вам нужно изменить класс для того же, используя Func или Lazy. Я покажу это с помощью Func

visitUIService = new VisitUIService(()=>visitRepository.Object, ()=>visitService.Object);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...