Настройка page/respone.body в Capybara для работы в Webrat

Я мигрирую в Капибару. Одна из проблем, с которыми я столкнулся, - это перенос шага в формате PDF.

Этот шаг устанавливает page.body в разобранный pdf. Таким образом, я могу использовать шаги огурца по умолчанию.

When 'I follow the PDF link "$label"' do |label|
  click_link(label)
  page.body = PDF::Inspector::Text.analyze(page.body).strings.join(" ")
end

Ex.

When I follow the PDF link "Catalogue"
Then I should see "Cheap products"

Я получаю следующую ошибку:

undefined method `body=' for #<Capybara::`enter code here`Document> (NoMethodError)

3 ответа

Решение

В capybara нет никакого установщика для тела, определенного в источнике, поэтому вы не можете установить его таким образом. Попробуйте это (не проверено):

page.instance_variable_set(:@body, PDF::Inspector::Text.analyze(page.body).strings.join(" "))

На вершине, убедитесь, что вы установили :js => true как это:

scenario 'do something', :js => true do
    str = PDF::Inspector::Text.analyze(page.body).strings.join(" ") # or whatever string you want
    # then just use javascript to edit or add the body
    page.evaluate_script("document.write(#{str});")
end

Теперь это зависит от драйвера, но это одно из решений...

Это сработало для меня:

Then /^I should be served the document as a PDF$/ do
  page.response_headers['Content-Type'].should == "application/pdf"
  pdf = PDF::Inspector::Text.analyze(page.source).strings.join(" ")
  page.driver.response.instance_variable_set('@body', pdf)
end

Then /^I should see the document details$/ do
  page.should have_content("#{@document.customer.name}")
  page.should have_content("#{@document.resources.first.resource.name}")
  page.should have_content("Document opened at #{@document.created_at.strftime("%e-%b-%4Y %r")}")
end

Обратите внимание, что я работаю с PDF

pdf = DocumentPdf.new(@document)
send_data pdf.render, :filename => "document_#{@document.created_at.strftime("%Y-%m-%d")}",
  :type => "application/pdf",
  :disposition => "inline"
Другие вопросы по тегам