2012-09-20 23 views
16

Tôi mới sử dụng RSpec và Capybara và tôi đang cố gắng kiểm tra xem trang có thời gian trên trang hay không. 12:00 hoặc 14:24 hoặc 08:12 là những ví dụ hay về những gì tôi đang cố gắng thử nghiệm.Thử nghiệm Capybara nếu trang có cụm từ thông dụng

Tôi đang sử dụng regex sau:

/^\d{2}:\d{2}/ 

Tôi không chắc chắn làm thế nào để "cụm từ nó" trong Capybara để kiểm tra nếu trang chứa regex này.

Trả lời

24

tôi giả sử cái gì đó như

page.text.should match(/^\d{2}:\d{2}/) 

hay, với RSpec cú pháp

expect(page.text).to match(/^\d{2}:\d{2}/) 

mới Hoặc bạn có thể kiểm tra không phải là toàn bộ trang nhưng một số yếu tố, ví dụ

find("span.time").text.should match(/^\d{2}:\d{2}/) 
+0

Cảm ơn bạn! Trang sẽ không được chấp nhận? –

+1

Tôi tin rằng không, ít nhất là không phải trong tương lai gần nhất. Có vẻ như rất nhiều người sử dụng nó và xem xét nó đọc tốt. Để biết thêm chi tiết, hãy xem [bài đăng trên blog này] (http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax) – khustochka

+0

Lưu ý rằng truy xuất nội dung và sau đó sử dụng các đối sánh không phải là Capybara trên kết quả phá vỡ chức năng Capybara của chờ đợi một trận đấu xảy ra. Sử dụng giải pháp này, bạn có thể sẽ truy xuất văn bản trước khi công việc được thực hiện để đặt văn bản ở đó mà bạn đang tìm kiếm. Tôi sẽ đi xa như vậy để nói đây là một mô hình chống Capybara. –

11

Tôi không biết nếu điều này là một hành vi mới, nhưng bạn chỉ có thể sử dụng has_content?:

page.has_content?(/do not have permission/i)

Trong rspec, đó sẽ là một cái gì đó như thế này:

expect(page).to have_content(/do not have permission/i)

Tôi tìm thấy điều này trong số online documentation for capybara, nhưng dưới has_text? kể từ has_content? chỉ là một bí danh.

+0

Thật không may Capybara không hỗ trợ tìm kiếm phân biệt chữ hoa chữ thường trên [tài liệu DSL] (https://github.com/jnicklas/capybara#the-dsl) –

+1

Đó là tìm kiếm xpath, chứ không phải đối sánh. 'has_content' được định nghĩa bởi' has_content', một bí danh cho 'has_text', dựa trên' assert_text', có một regex. Ruby regex engine xác định cách regex khớp với thứ gì đó chứ không phải DSL của capybara. https://github.com/jnicklas/capybara/blob/1a9417061c08194d9c4332cbbac186798cd5978a/lib/capybara/node/matchers.rb#L435 – Nerdmaster

Các vấn đề liên quan