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