私はRSpecを初めてお使いになりました。問題が継続しているのは、どのレコードが範囲外であるかを理解することです。以下の例を参照してください。私はFactoryGirlを介して一連のレコードを作成しています。たとえば、ユーザーを作成してから、前のブロックでそのユーザーとsign_inします。これは常にうまくいくようです。しかし、以前に作成されたレコードの子どもであるレコードを使用しようとすると、問題が発生するようです。たとえば、グループを使用します。グループにはuserとgroup_typeが必要です。私がこれらの種類のレコードで何かをしようとするたびに、 "呼び出されたIDが無かった"というエラーが発生しました。私は "puts group.name"を試してみましたが、グループが作成されているのがわかりましたが、何らかの理由で "visit group_path(group)"行がレコードをもはや実行しなくなりました。私はここでかなり基本的なものが欠けていることを知っています。これが私を夢中にさせてくれたので、助けてくれてありがとう。RSpecはリクエスト仕様の子レコードを参照しています
describe "activities page" do
let(:user) { FactoryGirl.create(:user) }
let!(:group_type) { FactoryGirl.create(:group_type) }
let!(:group) { FactoryGirl.create(:group, user: user, group_type: group_type) }
before do
sign_in user
visit group_path(group)
click_button "Check In"
end
エラー:
1) Activity pages activities page
Failure/Error: visit group_path(group)
RuntimeError:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
追加するグループのshowメソッド:
def show
@group = Group.find(params[:id])
@members = @group.members.paginate(page: params[:page])
cookies[:group_id] = @group.id
# Set Pusher chat
@chat = Chat.find_by_group_id(@group.id)
@user = current_user
@messages = Message.find(:all, :conditions => ["chat_id = ?", @chat.id.to_s])
end
あなたのGroupsControllerの 'show'メソッドはどのように見えますか? –
上記に追加されました。見ていただきありがとうございます。 – pejmanjohn
'@ chat'はnilですか?あなたのテストでは、作成したグループに関連するチャットは作成されていないようです。 –