コントローラーをテストする必要がある rspec テストがあります。
it "renders the #show view" do
get :show, id: FactoryGirl.create(:quiz)
@facebook_profile = FactoryGirl.create(:facebook_profile)
response.should render_template :show
end
facebook_profile オブジェクトには user_q1 列があるため、@facebook_profile.user_q1 は有効な結果を返します。
私のクイズコントローラーでは:
@user_q1 = @facebook_profile.user_q1
これは手動テストでは問題なく動作しますが、rspec では次の結果が得られます。
undefined method `user_q1' for nil:NilClass
問題は、コントローラーの show メソッドの最初の行にあると思われます。
@facebook_profile = FacebookProfile.find_by_facebook_id(session[:facebook_profile_id])
セッション コントローラー (モデルの列ではありませんが) に、facebook_profile_id という変数があります。次に、クイズ コントローラーの上記のコード行でこの変数を呼び出します。facebook_profile_id がわからないため、私の仕様では @facebook_profile を定義できないと思います。どうやら「@facebook_profile = FactoryGirl」(上記のように) を定義するだけでは機能しません。