Nokogiri с Rspec

#ruby-on-rails #ruby #rspec #nokogiri

#ruby-on-rails #ruby #rspec #nokogiri

Вопрос:

Есть ли способ использовать Nokogiri в Rspec?

В частности, я пытаюсь получить ответ от действия контроллера и преобразовать его в объект Nokogiri page и запустить синтаксический анализ для Nokogiri, подобный приведенному ниже:

 page.search('input[name="some_name"]').size.should == 1
  

Куда мне включить Nokogiri — это должно быть в spec_helper.rb?

Как мне преобразовать ActionController::TestResponse в объект Nokogiri?

Или возможно выполнить вышеуказанное утверждение, используя простой синтаксис Rspec?

Комментарии:

1. похоже на то, что capybara ( github.com/jnicklas/capybara ) (в частности, модуль запроса) предназначен для.

2. нет, если вы тестируете, например, HTTP api, который передает XML

Ответ №1:

Если вы не используете capybara, как предлагает @sevenseacat, вы можете сделать что-то вроде:

 page = Nokogiri::HTML(response.body)
  

А затем используйте Nokogiri методы поиска. Но capybara это действительно лучший способ, потому что он включает модуль запросов, который позволяет делать такие вещи, как

 expect(page).to have_css('input[name=some_name]', count:1)