Немного опоздал на вечеринку здесь, но, на мой взгляд, здесь все еще нет достаточного ответа.
В Moq нет явной генерации заглушек и макетов, как в RhinoMocks.Вместо этого все вызовы установки, например mockObject.Setup(x => blah ...)
, создают заглушку.
Однако, если вы хотите, чтобы тот же код обрабатывался как фиктивный, вам нужно вызвать mockObject.Verify(x => blah ...)
, чтобы подтвердить, что установка прошла так, как вы ожидали.
Если вы позвоните mockObject.VerifyAll()
, он будет воспринимать все, что вы настроили, как ложные, и это вряд ли будет желаемым вами поведением, т.е. все заглушки будут рассматриваться как ложные.
Вместо этого, когданастройка макета используйте метод mockObject.Setup(x => blah ...).Verifiable()
, чтобы явно пометить установку как макет.Затем вызовите mockObject.Verify()
- тогда будут утверждены только настройки, помеченные Verifiable()
.