Behat có nhiều tùy chọn để bạn chia nhỏ FeatureContext thành nhiều lớp. Trước tiên, bạn có thể sử dụng kế thừa cũ của trường học php5. Nếu thừa kế không phải là những gì bạn muốn, Behat cũng hỗ trợ các điều khoản phụ: "Using Subcontexts".
Tiếp theo, nếu bạn muốn đặt tên lớp của mình khác với FeatureContext
, bạn có thể xác định lại điều đó trong phần "Context Configuration" trong tệp cấu hình behat.yml
của mình.
Bằng cách này, bạn có thể tách các định nghĩa và móc phổ biến thành các lớp riêng biệt và sử dụng chúng trong các bộ tính năng khác cũng như với cả subcontexting hoặc thừa kế.
Nhưng câu hỏi của bạn cũng hỏi:
Tôi muốn có một tập tin định nghĩa cho mỗi tập tin tính năng.
Yêu cầu này hoàn toàn sai. Bối cảnh và kịch bản BDD là tất cả về mô tả hành vi ứng dụng của bạn trong điều kiện kinh doanh và tạo từ điển kiểm tra cho các hành vi được mô tả. Lưu ý rằng, về mặt logic, bạn không thể có nhiều từ điển khác nhau cho một tập hợp tính năng. Bằng cách viết các định nghĩa bước, bạn đang nói với Behat những gì mà Given I am on "/news"
có nghĩa là. Và khi bạn muốn bước đó có nghĩa là những thứ khác nhau từ tính năng đến tính năng - bạn đang làm sai.
Behat bao gồm 2 khái niệm riêng biệt chính và đủ:
*.feature
file, viết bằng ngôn ngữ Gherkin. Những tệp đó phải tự mô tả. Có nghĩa là, họ nên cung cấp tất cả thông tin cho người đọc để hiểu họ. Gherkin không phải là một ngôn ngữ lập trình mới cho các bài kiểm tra chức năng của bạn, nó chỉ là một dấu hiệu markdown cho các câu chuyện của bạn!
FeatureContext.php
lớp học, mô tả cách Behat nên kiểm tra các tính năng của bạn. Nó định nghĩa từ điển ứng dụng rộng rãi được sử dụng với toàn bộ ứng dụng bộ tính năng. Đây là cầu nối lập trình giữa các dấu kiểm của giống như câu chuyện người dùng và các thử nghiệm chức năng thực tế.
Và bạn không nên gây rối điều này. Bộ tính năng đơn nên có từ điển đơn (định nghĩa). Nhưng bạn có thể sử dụng từ điển đơn trong nhiều hơn một bộ tính năng nhờ thừa kế và các phụ lục. Và có, bạn có thể chia từ điển bộ đơn thành nhiều lớp học php ;-)
Tôi hiểu bạn đến từ đâu nhưng bạn quên mất nỗi đau khi duy trì thông số kỹ thuật của mình? Điểm của Sfisioza (tôi đoán) là về điều này. Nếu ai đó có một hệ thống phức tạp, người ta có thể trải qua nỗi đau như vậy khi đi qua FeatureContext.php – RVM