web-dev-qa-db-ja.com

pryデバッガーでrspec変数を調べる方法

Pryを使用してrspecテストにステップインする方法を説明するSOの投稿をいくつか見て、これを実行できるようになりました。しかし、ブレークポイントに到達すると、有用な情報を表示するのに苦労しています。以下のこのコードでは、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

これを行う方法についてのアイデアはありますか?

21

binding.pryitブロック内に配置する必要があります。

29
Sergey Alekseev

スペックでpryを使用するには、spec_helper.rbファイル内にrequire 'pry'を追加する必要があります。その後、任意の仕様内でbinding.pryを使用できます。

15
BamBam22

これは機能するはずです:

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
a.s.t.r.o

実際に使用するときにpryを要求しようとします。そうしないと、いくつかの異常なバグが発生する可能性があります(異常ですが、発生する可能性があります)。つまり、特定のテストのみをデバッグする場合は、require 'pry'を実行する必要はありません。 spec_helper.rbでは、デバッグするテストでのみrequire 'pry'を使用できます。

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