Какова цель Verifiable()
?
Если я проверю Mock
и опущу это, он все равно проверяет SetUp
.
Изменить: я использовал VerifyAll()
, поэтому все проверялось. После перехода на Verify()
проверялись только мои .Verifiable()
SetUp
.
Какова цель Verifiable()
?
Если я проверю Mock
и опущу это, он все равно проверяет SetUp
.
Изменить: я использовал VerifyAll()
, поэтому все проверялось. После перехода на Verify()
проверялись только мои .Verifiable()
SetUp
.
ДОБАВЛЕНИЕ: Как указано в другом ответе, цель .Verifiable
состоит в том, чтобы включить Setup
в набор «отложенных Verify(...)
вызовов», которые затем могут быть запущены через mock.Verify()
.
Разъяснение OP дает понять, что это была цель, и единственная проблема заключалась в том, чтобы выяснить, почему она не работает, но, как подсказал @Liam, ответ действительно должен коснуться и этого: - Ключ варианты использования, насколько я могу судить, следующие:
mock.Setup()
и mock.Verify
Verify
(например, вы можете настроить его в другом вспомогательном методе)... и вернемся к моему ответу, который кратко и эффективно гласит: «Будьте осторожны, поскольку обычно считается, что вышеупомянутые плюсы перевешиваются влиянием, которое достижение этих целей оказывает на удобочитаемость и ремонтопригодность тестов, которые слишком сильно опираются на такие конструкции».
ОРИГИНАЛ: обратите внимание, что там, где это возможно, следует вместо этого следовать макету AAA и, следовательно, следует использовать выполнение явных mock.Verify( expression )
вызовов после завершения работы, а не mock.Setup( ... ).Verifiable()
в паре с mock.Verify()
или mock.VerifyAll()
по возможности (кредит: @kzu).
Setup(...)
(в моем разделе аранжировки) и VerifyAll()
(в моем разделе assert)?
- person Eric Smith; 14.02.2012
Setup(...)
вызовов (›30). Можно сопоставить каждый с эквивалентным Verify () для удовлетворения соглашения, но это вызывает большое количество дублирования кода, и его будет сложнее поддерживать и читать по мере роста количества модульных тестов. Я предполагаю, что я действительно спрашиваю, могут ли быть сделаны исключения, если существует большое количество настроек, или избегание Verifiable()
является жестким и быстрым правилом?
- person Steve Chambers; 08.05.2013
Setup
и Verify
, что может быть упущено из-за более высокого достижимого выигрыша, только ослабляя ограничение СУХОЙ способом, предложенным AAA и семейством стратегий, которые настоятельно подразумевают
- person Ruben Bartelink; 30.10.2015
Когда метод Verify()
вызывается в конце теста, если какое-либо из ожиданий, отмеченных как проверяемые, не было вызвано, то исключение составляет thrown
.
VerifyAll()
не проверяет достоверность ожиданий.