私は RSpec に不慣れで、常に問題を抱えているのは、どのレコードが範囲内/範囲外かを理解することです。例については、以下を参照してください。FactoryGirl を介して一連のレコードを作成しています。たとえば、ユーザーを作成し、before ブロックでそのユーザーでサインインします。これは常にうまくいくようです。しかし、以前に作成したレコードの子であるレコードを使用しようとすると、問題が発生するようです。たとえば、グループで。グループには、ユーザーと group_type が必要です。この種のレコードで何かをしようとすると、「Called id for nil」というエラーが発生します。「puts group.name」を試してみましたが、グループが作成されていることがわかりますが、何らかの理由で「visit group_path(group)」行を実行すると、レコードが存在しなくなります。私は私を知っています' ここにはかなり基本的なものが欠けています。これは私を夢中にさせているので、助けていただければ幸いです。
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
Group 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