Яка мета Verifiable()
?
Якщо я підтверджую, Mock
а залиште це, він все ще перевіряє SetUp
.
Редагувати: Я використовував, VerifyAll()
таким чином, причину все перевіряється. Після зміни Verify()
лише .Verifiable()
SetUp
перевірялися мої s.
Яка мета Verifiable()
?
Якщо я підтверджую, Mock
а залиште це, він все ще перевіряє SetUp
.
Редагувати: Я використовував, VerifyAll()
таким чином, причину все перевіряється. Після зміни Verify()
лише .Verifiable()
SetUp
перевірялися мої s.
Відповіді:
ДОПОЛНЕННЯ: Як говориться в іншій відповіді, мета .Verifiable
полягає в тому, щоб включити Setup
в набір "відкладені Verify(...)
дзвінки", які потім можуть бути запущені через mock.Verify()
.
З роз'яснення ОП чітко видно, що це була мета, і єдиною проблемою було з'ясування того, чому це не працює, але, як сказала @Liam, відповідь дійсно повинна торкнутися і цього: - Ключові випадки використання, наскільки я можу дивіться:
mock.Setup()
іmock.Verify
Verify
виклику (наприклад, ви можете встановити її іншим допоміжним методом)... і повернусь до моєї відповіді, яка настійно каже: "будьте обережні, оскільки вищезазначені плюси, як правило, вважаються переваженими від того, що досягнення цих цілей має на розбірливість та ремонтопридатність тестів, які занадто сильно спираються на подібні конструкції".
ОРИГІНАЛ: Зауважте, що там, де це можливо, слід замість того, щоб дотримуватися макета AAA, а отже, слід робити явні mock.Verify( expression )
дзвінки після того, як робота була виконана, а не в mock.Setup( ... ).Verifiable()
парі з a mock.Verify()
абоmock.VerifyAll()
де це можливо (кредит: @kzu ).
Verifyable()
/ VerifyAll()
у всіх випадках. Мій поточний тестовий блок має велику кількість Setup(...)
дзвінків (> 30). Міг би відповідати кожному з еквівалентним Verify (), щоб задовольнити умовність, але це спричиняє велику кількість дублювання коду і буде складнішим у підтримці та зчитуванні у міру збільшення кількості одиничних тестів. Я думаю, що я справді запитую, чи можна зробити винятки, якщо існує велика кількість налаштувань, або це уникнення Verifiable()
жорсткого і швидкого правила?
Setup
і a Verify
, у якого може бути відсутній більший виграш, який можна досягти, лише послабити обмеження DRY у спосіб, запропонований AAA та сімейством стратегій, що настійно має на увазі
Коли Verify()
метод викликається в кінці тесту, якщо будь-яке з очікувань, позначених як перевіряється, не було викликано, то виняток є thrown
.
VerifyAll()
не перевіряє перевірених очікувань.