BDD thêm một chu kỳ xung quanh chu trình TDD.
Vì vậy, bạn bắt đầu với một hành vi và để điều đó thúc đẩy các bài kiểm tra của bạn, sau đó để các bài kiểm tra thúc đẩy sự phát triển. Lý tưởng nhất là BDD được điều khiển bởi một số loại thử nghiệm chấp nhận, nhưng điều đó không cần thiết 100%. Miễn là bạn có hành vi dự kiến được xác định, bạn sẽ ổn.
Vì vậy, giả sử bạn đang viết Trang đăng nhập.
Bắt đầu với con đường hạnh phúc:
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
Cú pháp Cho-Và-Khi-Và-Rồi-Và này là phổ biến trong phát triển theo hành vi. Một trong những lợi thế của nó là nó có thể được đọc (và, được đào tạo, viết) bởi những người không phải là nhà phát triển - nghĩa là, các bên liên quan của bạn có thể xem danh sách các hành vi bạn đã xác định để hoàn thành thành công nhiệm vụ và xem liệu nó có phù hợp với mong đợi của họ từ lâu trước khi bạn phát hành một sản phẩm không hoàn chỉnh.
Có một ngôn ngữ kịch bản, được gọi là Gherkin, trông rất giống với ngôn ngữ trên và cho phép bạn viết mã kiểm tra đằng sau các mệnh đề trong các hành vi này. Bạn nên tìm kiếm một dịch giả dựa trên Gherkin cho khung phát triển thông thường của bạn. Đó là ngoài phạm vi của câu trả lời này.
Dù sao, trở lại hành vi. Ứng dụng hiện tại của bạn chưa làm điều này (nếu có thì tại sao có ai đó yêu cầu thay đổi?), Vì vậy bạn đang thất bại trong bài kiểm tra này, cho dù bạn đang sử dụng trình chạy thử nghiệm hay chỉ đơn giản là kiểm tra thủ công.
Vì vậy, bây giờ đã đến lúc chuyển sang chu trình TDD để cung cấp chức năng đó.
Cho dù bạn có viết BDD hay không, các bài kiểm tra của bạn nên được đặt tên theo một cú pháp chung. Một trong những phổ biến nhất là cú pháp "nên" mà bạn mô tả.
Viết một bài kiểm tra: ShouldAcceptValidDetails. Trải qua chu trình Red-Green-Refactor cho đến khi bạn hài lòng với nó. Bây giờ chúng ta có vượt qua bài kiểm tra hành vi không? Nếu không, hãy viết một bài kiểm tra khác: ShouldRedirectToUserDefaultPage. Red-Green-Refactor cho đến khi bạn hạnh phúc. Rửa, rửa, lặp lại cho đến khi bạn hoàn thành các tiêu chí được quy định trong hành vi.
Và sau đó chúng ta chuyển sang hành vi tiếp theo.
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"
Bây giờ bạn không nên tránh điều này để vượt qua hành vi trước đó của bạn. Bạn nên trượt bài kiểm tra này vào thời điểm này. Vì vậy, thả trở lại chu kỳ TDD của bạn.
Và như vậy cho đến khi bạn có trang của bạn.
Rất khuyến khích Sách Rspec để tìm hiểu thêm về BDD và TDD, ngay cả khi bạn không phải là nhà phát triển Ruby.