使用capybara调试rspec集成测试的最佳方法是什么?

时间:2012-07-24 21:23:02

标签: ruby-on-rails-3 rspec-rails

我有一个rspec测试失败,但在开发中,当我自己执行操作时,页面呈现正确。

以下是片段:

describe "sign up process" do

let (:admin1) { FactoryGirl.create(:admin) }

describe "with valid information"

  before do 
    visit new_admin_registration_path
    fill_in "Email", with: admin1.email
    fill_in "Password", with: admin1.password
    fill_in "Password confirmation", with: admin1.password_confirmation
    click_button "Sign up"
  end

  it { should have_selector('div.alert') }
end

根本找不到那个选择器,但我确认在使用开发环境查看源时它存在。

我希望能够做的是检查正在渲染的页面以查看我缺少的内容。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:5)

Capybara有一个方法save_and_open_page,它将打开一个新的浏览器窗口,其中包含页面的当前状态(它需要launchy gem)。

例如:

  before do 
    ...
    click_button "Sign up"
    save_and_open_page
  end

答案 1 :(得分:4)

这就像使用调试器或类似pry的东西一样简单。

我个人更喜欢撬,因为每次我用ruby 1.9尝试安装调试器都是一种麻烦......

使用pry,您只需在spec_helper.rb中添加require "pry",然后在问题发生前写一行binding.pry。然后,你的测试附有一个irb会话。