ruby on rails - اختبار راسب للكيانات هتمل في محتوى الصفحة




ruby-on-rails rspec (3)

لقد وجدت حلا في الوقت الحالي يستخدم التعبير العادي بدلا من سلسلة:

find('#breadcrumbs').text.should match(/Reports . Aging Reports/)

هذا يحصل على نص breadcrumbs ديف، الذي يحتوي على النص الذي أبحث عنه، وبالتالي فإن نطاق المباراة محدودة. هذا يعمل بشكل جيد، ولكن ما زلت أحب أن أعرف كيفية مطابقة كيانات هتمل محددة.

أنا أكتب طلب المواصفات وترغب في اختبار لوجود سلسلة "تقارير» تقارير الشيخوخة ". أحصل على خطأ (غير صحيح متعدد الشارات شار) إذا وضعت في الحرف في تعبير تعبير بلدي مباشرة، لذلك حاولت هذا: page.should have_content("Reports » Aging Reports")

هذا فشل الاختبار مع الرسالة:

expected there to be content "Reports » Aging Reports" in "\n Reports » Aging Reports\n

لقد حاولت أشياء مثل .html_safe دون أي نجاح. هل هناك طريقة لاختبار النص الذي يحتوي على كيانات هتمل؟

تصحيح:

وإليك المنطقة ذات الصلة من مصدر هتمل:

<a href="/reports">Reports</a> &raquo; <a href="/aging_reports">Aging Reports</a>


html_safe لا يزيل علامات هتمل إذا كان هذا ما تريد.

إذا كنت سوف إزالة علامات هتمل قبل اختبار يمكنك استخدام sanitize جوهرة.

# in Gemfile
gem 'sanitize'

# in testfile
require 'sanitize'
html = Sanitize.clean(page.body.text)
html.should have_content("Reports &raquo; Aging Reports")

يمكنك إجراء اختبار على المصدر الخام لصفحتك أيضا:

breadcrumb = '<a href="/reports">Reports</a> &raquo; <a href="/aging_reports">Aging Reports</a>'
page.body.should include(breadcrumb)
expect(page.body).to include(breadcrumb) # rspec 2.11+

مع أن أقول أنا لست متأكدا من أن الحل الأكثر أناقة. على افتراض أن هناك فئة اسمها. .breadcrumb حول الروابط الخاصة بك يمكن أن مجرد التحقق من صحة الروابط موجودة داخل ديف:

within '.breadcrumb' do
  page.should have_css('a', text: 'Reports')
  page.should have_css('a', text: 'Aging Reports')
  expect(page).to have_css('a', text: 'Reports') # rspec 2.11+
  expect(page).to have_css('a', text: 'Aging Reports') # rspec 2.11+
end

بهذه الطريقة كنت تبحث صراحة عن هريف داخل كتلة التنقل.





html-entities