ここのドキュメントに基づいて、各例でインスタンス化されたものを let メソッドに配置することにより、いくつかの仕様をクリーンアップしようとしています: https://www.relishapp.com/rspec/rspec-core/v/2-13/docs /helper-methods/let-and-let !. 2 番目の仕様の ObjectConnection ピースは、main_menu の一部として作成されます。Rails コンソール経由で実行すると、問題なく動作します。
describe "shall comment on items" do
let(:menu) { FactoryGirl.create(:main_menu) } # i am assuming that I have access to a menu variable
# this one works
it 'should submit a message to a valid location' do
kt=menu.location
xhr :post, :create_message, {content: "here is my content", associated_global_id: kt.global_id }
response.code.should == "200"
end
# this one doesn't
it 'should submit a message to a valid object connection' do
pairing=ObjectConnection.first # multiple ObjectConnections are created as part of the main_menu factory
xhr :post, :create_message, {content: "here is my approval of your pairing seneor", associated_global_id: pairing.global_id } # this is where the error is
response.code.should == "200"
end
end
実行すると、次のようになります。
undefined method `global_id' for nil:NilClass
2番目の例で
これはどのように機能するべきですか?または、各例で menu=FactoryGirl.create(:main_menu) を宣言する必要がありますか?