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
これを行う方法についてのアイデアはありますか?
binding.pry
をit
ブロック内に配置する必要があります。
スペックでpryを使用するには、spec_helper.rbファイル内にrequire 'pry'
を追加する必要があります。その後、任意の仕様内でbinding.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
it "should list all flat_happenings" do
binding.pry
JSON.parse(response.body)["flat_happenings"].length.should eq 30
end
end
end
HTH
実際に使用するときにpryを要求しようとします。そうしないと、いくつかの異常なバグが発生する可能性があります(異常ですが、発生する可能性があります)。つまり、特定のテストのみをデバッグする場合は、require 'pry'
を実行する必要はありません。 spec_helper.rb
では、デバッグするテストでのみrequire 'pry'
を使用できます。
def method_i_am_debugging
puts 'does stuff'
require 'pry'
binding.pry
# ...
end