Я новичок в RSpec и что-то, с чем я постоянно сталкиваюсь, понимает, какие записи находятся в/из области видимости. Ниже приведен пример. Я создаю серию записей через FactoryGirl. Например, я создаю пользователя, а затем в блоке before I sign_in с этим пользователем. Это всегда работает нормально. Но всякий раз, когда я начинаю пытаться использовать записи, являющиеся дочерними элементами ранее созданных записей, я, похоже, попал в неприятности. Например, с группой. Для группы требуется пользователь и тип group_type. Всякий раз, когда я пытаюсь что-то сделать с такими типами записей, я нажимаю ошибку «Вызывается id для нуля». Я попытался «puts group.name», и я вижу, что группа создается, но по какой-то причине после того, как строка «visit group_path (group)» выполняет запись, больше не существует. Я знаю, что мне не хватает чего-то довольно фундаментального. Цените любую помощь, так как это сводит меня с ума.RSpec, связанный с дочерней записью в запросе spec
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
Добавление группы шоу метод:
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
Как выглядит метод 'show' в вашем GroupController? –
Добавлено выше. Спасибо, что посмотрели. – pejmanjohn
Является ли '@ chat' ноль? Ваш тест, похоже, не создает чатов, связанных с создаваемыми ими группами. –