Tôi đang viết một ứng dụng mà bạn muốn kiểm tra xem chế độ xem có không có một số chức năng hay không - đặc biệt vì chức năng đó chỉ được trình bày cho người dùng trong nhóm bảo mật nhất định. Tôi đang tìm kiếm đối diện của assert_selects để thấy rằng một menu là không phải là được hiển thị.Đối diện của assert_select?
Trả lời
Hãy nhìn vào các tài liệu ở đây:
http://apidock.com/rails/ActionController/Assertions/SelectorAssertions/assert_select
Từ các tài liệu:
assert_select là một assertion that selects elements and makes one or more equality tests.
và từ các thử nghiệm bình đẳng s ections:
Các thử nghiệm bình đẳng có thể là một trong những cách sau:
đúng - Khẳng định là đúng nếu ít nhất một thành phần được chọn.
false - Xác nhận là đúng nếu không có phần tử nào được chọn.
Chuỗi/Regexp - Xác nhận là đúng nếu giá trị văn bản của ít nhất một thành phần khớp với chuỗi hoặc cụm từ thông dụng.
Số nguyên - Xác nhận là đúng nếu chính xác số lượng thành phần đó là được chọn.
Phạm vi - Xác nhận là đúng nếu số phần tử đã chọn phù hợp với phạm vi .
Nếu không có kiểm tra bình đẳng được chỉ định, xác nhận là đúng nếu ít nhất một phần tử được chọn.
Và một ví dụ đơn giản:
# Page contains no forms
assert_select "form", false, "This page must contain no forms"
Bạn có thể dễ dàng xác định của riêng bạn:
module ActionDispatch::Assertions::SelectorAssertions
def assert_no_select(*a,&b) # try to think of a better name!
begin
assert_select(*a,&b)
rescue AssertionFailedError
return
end
raise "fail" # there should be a better built-in alternative
end
end
Đừng quên bạn luôn có thể vượt qua trong tính, và thiết lập đó không.
assert_select "a", {count: 0, text: "New"}, "This page must contain no anchors that say New"
Điều này không hiệu quả đối với tôi: Không có ngoại lệ nào được nâng lên ngay cả khi tìm thấy phần tử. –
Cập nhật: Nó hoạt động tốt cho bất kỳ phần tử nào khác ngoài 'nội dung'. –
Điều cần biết! Cảm ơn @MatijsvanZuijlen – GantMan
Tôi gặp sự cố này để đảm bảo KHÔNG có nút 'Xóa', trong số nhiều nút. Câu trả lời được chấp nhận sẽ không hoạt động trong tình huống này vì đã có một số nút.
assert_select '.button' do |btn|
btn.each do |b|
assert_no_match 'Delete', b.to_s
end
end
Tuy nhiên, tôi thực sự thích câu trả lời của GantMan tốt hơn!
- 1. Rails 3 RSpec và assert_select
- 2. Đối diện của numpy.unwrap
- 3. Đối diện của instanceof
- 4. Làm thế nào để sử dụng assert_select để kiểm tra sự hiện diện của một liên kết nhất định?
- 5. Python: Đối diện của `datetime.date.isocalendar()`
- 6. Đối diện của Bitwise OR
- 7. Đối diện của append trong jquery
- 8. đối diện của <noscript>
- 9. Đối diện của a nbsp là gì?
- 10. Đối diện của View.bringToFront() trong Android
- 11. Đối diện với bringSubviewToFront?
- 12. Đối diện với os.path.commonprefix
- 13. JQuery find() đối diện
- 14. Tính diện tích của một đối tượng với OpenCV
- 15. nhận được đường chéo đối diện của mảng numpy
- 16. Đại diện của Java đối tượng được tuần tự hóa
- 17. Phương pháp đối diện của bất kỳ <T>
- 18. Đối diện của aspnet_regiis -ga <UserName>
- 19. Jquery đối diện với .hasClass()?
- 20. đối số giao diện symfony2
- 21. Đối tượng là giao diện
- 22. Python của join() sẽ không tham gia chuỗi đại diện (__str__) của đối tượng của tôi
- 23. đối diện với lệnh 'git status'
- 24. Đối tượng giao diện mặc định
- 25. Tạo đối tượng giả bằng giao diện
- 26. Đối diện với tabbing xuống trang?
- 27. Đối diện với "luôn ở trên cùng"
- 28. Đối diện chức năng PHP của strstr trở lại phần đầu của chuỗi, không kéo
- 29. Đối diện với Time.now.advance() trong Ruby
- 30. Đối diện với "scrollTop" trong jQuery
Điều này sẽ không hoạt động khi 'AssertionFailedError' được nâng lên trước khi phủ định được đánh giá. – gertas
Điểm tốt! Đã chỉnh sửa. –