BDD додає цикл навколо циклу TDD.
Отже, ви починаєте з поведінки і нехай це керує вашими тестами, а потім нехай тести сприяють розвитку. В ідеалі BDD керується якимось тестом на прийняття, але це не на 100% необхідне. Поки ви визначаєте очікувану поведінку, ви все в порядку.
Отже, скажімо, що ви пишете сторінку входу.
Почніть зі щасливого шляху:
Given that I am on the login page
When I enter valid details
Then I should be logged into the site
And shown my default page
Цей синтаксис "Дано-І-Коли-І-Тоді-І" є загальним у розвитку, орієнтованому на поведінку. Однією з його переваг є те, що він може читати (і, навчаючи, писати) не розробниками - тобто ваші зацікавлені сторони можуть переглянути список поведінки, яку ви визначили для успішного виконання завдання, і побачити, чи це відповідає їх очікуванням задовго до того, як ви випустите неповний продукт.
Існує мова сценаріїв, відома під назвою Gherkin, яка дуже схожа на вищесказане і дозволяє писати тестовий код за положеннями цих поведінок. Вам слід шукати перекладача, заснованого на Gherkin, для вашої звичної структури розробки. Це виходить за межі цієї відповіді.
Так чи інакше, поверніться до поведінки. Ваша поточна програма ще не робить цього (якщо це так, чому хтось вимагає зміни?), Тому ви не виконаєте цей тест, чи використовуєте ви тестовий запуск або просто тестуєте вручну.
Тому тепер прийшов час перейти на цикл TDD, щоб забезпечити цю функціональність.
Незалежно від того, пишете ви BDD чи ні, ваші тести повинні бути названі загальним синтаксисом. Один з найпоширеніших - описаний вами синтаксис "слід".
Напишіть тест: ShouldAcceptValidDetails. Пройдіть цикл Червоно-Зелений-Рефактор, поки не будете задоволені цим. Ми зараз проходимо тест на поведінку? Якщо ні, напишіть ще один тест: ShouldRedirectToUserDefaultPage. Червоно-зелений-Refactor, поки ви щасливі. Вимийте, промийте, повторіть, поки не виконаєте критерії, викладені в поведінці.
А потім переходимо до наступної поведінки.
Given that I am on the login page
When I enter an incorrect password
Then I should be returned to the login page
And shown the error "Incorrect Password"
Тепер вам не слід було б заздалегідь передбачати це, щоб передати свою попередню поведінку. Ви повинні провалити цей тест у цей момент. Тому поверніться до вашого циклу TDD.
І так далі, поки у вас немає своєї сторінки.
Настійно рекомендую Книгу Rspec дізнатися більше про BDD та TDD, навіть якщо ви не розробник Ruby.