Tôi đã viết trình chiếu phương thức cho ứng dụng web trình bày điều hướng cho bộ tài liệu và hiển thị siêu dữ liệu khác nhau cho các tài liệu đó.Giới hạn các bước dưa chuột hoặc các bước tệp đến tính năng hoặc thẻ được chỉ định
Đây là một thành phần lớn của ứng dụng với các yêu cầu bí truyền, vì vậy tôi nghĩ rằng nó đủ công bằng mà các kịch bản cốt lõi của nó (được cho là tiêu chí chấp nhận) phải vừa đủ vừa nội bộ.
Để tránh việc có một bước tiến mới cho mỗi người trong số nhiều kịch bản của chúng tôi, tôi đã thích nghi a helper mà dịch cụm từ con người có thể đọc được như document caption
vào selectors:
module SelectorsHelper
def selector_for(term)
case term
# Lightbox/modal/fancybox
when 'lightbox'
'#fancybox-inner'
when 'close button'
'.document-viewer__tools__close'
... cùng với một vài định nghĩa bước chung như như sau:
# Generic click action
When(/^I click (?:on)?(?:the |a)'(.*?)'?$/) do |element|
find(selector_for(element)).click
end
vấn đề, cho dù tôi đang hành động theo khái niệm rất chung chung như với các khái niệm trừu tượng trên hoặc cụ thể hơn liên quan đến mẫu mà tái diễn trong một bộ các tính năng, là những thể tàn phá w Các tính năng bí truyền khác, có thể có nhiều bước cụ thể hơn để phân tích chúng. Mỗi ví dụ Cucumber mà tôi đã thấy có các tệp định nghĩa bước có tên tệp mang một mối quan hệ thủ tục với một tệp tính năng cụ thể và giả định rằng trong các trường hợp này, tệp định nghĩa bước đó sẽ chỉ được gọi để phân tích các kịch bản trong tính năng liên quan của nó:
+ features
| + step_definitions
| | + global_steps.rb
| | + modal_steps.rb
| | + login_steps.rb
| + modal.feature
| + login.feature
Nhưng đó không phải là trường hợp - và tôi đang đấu tranh để từ chức bản thân mình để quan điểm cho rằng dưa chuột cố gắng áp dụng mỗi bước mô hình định nghĩa để mỗi kịch bản. Nếu những thử nghiệm này sẽ có bất kỳ công đức nào, chúng sẽ phát triển nhiều hơn, giới thiệu các khái niệm mới và giữ liên quan mà không cần phải viết lại liên tục. Tôi muốn có thể giới hạn phạm vi các bước của tôi để ngăn chặn chúng can thiệp vào các tính năng mà chúng không được viết, nhưng không biết làm thế nào. Các giải pháp về khái niệm sau đây tôi suy nghĩ:
- Sử dụng nền hoặc kịch bản
@tags
và gọi bước chỉ cho các kịch bản với những thẻ định nghĩa bước
- Nest trong một số loại gói helper hoặc meta bước nét đó là gọi bởi một nền độc quyền được cung cấp
Tôi không quen với Ruby và Cucumber có vẻ rất mỏng, vì vậy tôi bị ám ảnh bởi tiềm năng không giới hạn trên một mặt và không được triển khai trước. Bất kỳ ý tưởng?
Tôi nghĩ rằng câu hỏi của tôi đang tìm kiếm một giải pháp quá cụ thể cho một tình huống khó khăn chung chung. Đây là một câu hỏi hay mà tôi có thể hy vọng. Lời khuyên của bạn - _không dưa chuột được dự định sử dụng như thế nào - tạo ra rất nhiều ý nghĩa. Nếu tôi quay trở lại sử dụng dưa chuột, tôi sẽ làm theo lời khuyên đó! – Barney