Rspec testing for html entities in page content

后端 未结 4 844
我寻月下人不归
我寻月下人不归 2021-02-19 06:19

I\'m writing a request spec and would like to test for the presence of the string \"Reports » Aging Reports\". I get an error (invalid multibyte char) if I put in the character

相关标签:
4条回答
  • 2021-02-19 06:59

    You can have the test look at the raw source of your page too:

    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+
    

    With that said I'm not sure that's the most elegant solution. Assuming there is a class named .breadcrumb around your links you could just validate the links are present within the div:

    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
    

    This way you are explicitly looking for a href's within the breadcrumb block.

    0 讨论(0)
  • 2021-02-19 07:05

    I found a workaround for the time being that uses a regex instead of a string:

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

    This gets the text of the breadcrumbs div, which contains the text I'm looking for, so the scope of the match is limited. This works fine, but I'd still love to know how to match specific html entities.

    0 讨论(0)
  • 2021-02-19 07:08

    html_safe does not remove html tags if thats what you want.

    If you will remove html tags before you test you can use sanitize gem.

    # in Gemfile
    gem 'sanitize'
    
    # in testfile
    require 'sanitize'
    html = Sanitize.clean(page.body.text)
    html.should have_content("Reports &raquo; Aging Reports")
    
    0 讨论(0)
  • 2021-02-19 07:11

    Sometimes the simplest solution is the right one and things just work...

    page.should have_content("Reports » Aging Reports")
    
    0 讨论(0)
提交回复
热议问题