如何使用pry调试器检查rspec变量

时间:2013-07-24 15:04:03

标签: ruby-on-rails debugging rspec rspec-rails pry

我已经看到一些SO帖子解释了如何使用pry进入rspec测试并且能够做到这一点。一旦我到达断点,我就很难显示任何有用的信息。对于下面的代码,我想从pry控制台检查响应对象:

describe 'happenings' do
  context "#index (GET /api/v1/flat_happenings.json)" do
    before(:each) do
      30.times { FactoryGirl.create(:flat_happening) }
      get "/api/v1/flat_happenings.json"
    end
    describe "should list all flat_happenings" do
      binding.pry
      it { JSON.parse(response.body)["flat_happenings"].length.should eq 30 }
    end
  end
end

关于如何做到这一点的任何想法?

4 个答案:

答案 0 :(得分:27)

您应将binding.pry放在it区块内。

答案 1 :(得分:13)

要在规范中使用pry,我们需要在spec_helper.rb文件中添加require 'pry'。然后我们就可以在任何规范中使用binding.pry。

答案 2 :(得分:3)

这应该有效:

describe 'happenings' do
  context "#index (GET /api/v1/flat_happenings.json)" do
    before(:each) do
      30.times { FactoryGirl.create(:flat_happening) }
      get "/api/v1/flat_happenings.json"
    end
    it "should list all flat_happenings" do
      binding.pry
      JSON.parse(response.body)["flat_happenings"].length.should eq 30
    end
  end
end

HTH

答案 3 :(得分:0)

我尝试在实际使用时尝试撬开,否则可能会引入一些不寻常的错误(不常见,但可能会发生) 因此,这意味着如果您只想调试特定的测试,则无需在require 'pry'中使用spec_helper.rb,而只需在要调试的测试中使用require 'pry'

def method_i_am_debugging
  puts 'does stuff'
  require 'pry'
  binding.pry
  # ...
end