Настройка page / respone.body в Capybara для работы в Webrat - PullRequest
1 голос
/ 08 марта 2011

Я мигрирую в Капибару. Одна из проблем, с которыми я столкнулся, - это миграция шага в формате 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 ]

2 голосов
/ 28 марта 2012

Вверху убедитесь, что вы установили :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

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

1 голос
/ 09 марта 2011

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

page.instance_variable_set(:@body, PDF::Inspector::Text.analyze(page.body).strings.join(" "))
0 голосов
/ 28 февраля 2012

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

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"
...