Ваше утверждение:
mockFolderWatcher.Verify(m => m.StartFolderWatcher(mockAction.Object), Times.Once());
Говорит, что StartFolderWatcher
должен быть вызван с указанным c Action
(mockAction.Object
). Это не так: он вызывается с Action
, который был создан с помощью ProcessManager
и который указывает на его метод ProcessFile
.
Вы, вероятно, хотите сказать «Убедитесь, что StartFolderWatcher
был вызван с помощью any Action
":
mockFolderWatcher.Verify(m => m.StartFolderWatcher(It.IsAny<Action<string>>()), Times.Once());
По умолчанию Moq принимает любые вызовы, для которых вы не настроили ожидания (вы можете изменить это, указав MockBehaviour.Strict
при создании макета, если хотите). Вот почему Мок молча принял вызов StartFolderWatcher
, который фактически был сделан ProcessManager
.
. Вы можете позвонить mockFolderWatcher.VerifyNoOtherCalls();
, чтобы проверить, не было ли сделано никаких других неожиданных вызовов на ваш макет.