25

我看过一些 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

4 回答 4

38

您应该放置binding.pryit块内。

于 2013-07-24T15:15:23.933 回答
24

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

于 2016-02-15T22:04:46.187 回答
5

这应该有效:

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

高温高压

于 2013-07-24T15:19:12.783 回答
2

当我实际使用它时,我尝试要求 pry,否则,它可能会引入一些不寻常的错误(不寻常但它可能会发生)所以这意味着如果你只想调试特定的测试,你不需要require 'pry'spec_helper.rb你可以使用require 'pry'就在你要调试的测试中。

def method_i_am_debugging
  puts 'does stuff'
  require 'pry'
  binding.pry
  # ...
end
于 2020-03-25T09:17:03.727 回答