Ответ 1
ADDENDUM: Как указано в другом ответе, цель .Verifiable
состоит в том, чтобы .Verifiable
Setup
в набор "отложенных вызовов Verify(...)
", которые затем можно запускать с помощью mock.Verify()
.
Разъяснение OP дает понять, что это была цель, и единственной проблемой было выяснить, почему это не сработало, но, как подтолкнул @Liam, ответ должен коснуться и этого: - Ключевые варианты использования, насколько я могу увидеть это:
- поддержание сухости между
mock.Setup()
иmock.Verify
- позволяя отключить настройку проверки от самого вызова
Verify
(например, вы можете установить его в другом вспомогательном методе)
... и возвращаюсь к моему ответу, который кратко эффективно говорит: "будьте осторожны, поскольку вышеупомянутые плюсы, как обычно полагают, перевешиваются эффектом, который достижение этих целей оказывает на удобочитаемость и ремонтопригодность тестов, которые слишком опираются на такие конструкции"
ОРИГИНАЛ: обратите внимание, что там, где это возможно, следует вместо этого следовать схеме AAA, и, следовательно, следует делать явные mock.Verify( expression )
после выполнения работы, а не mock.Setup(...).Verifiable()
в сочетании с mock.Verify()
или mock.VerifyAll()
где это возможно (кредит: @kzu).