1
У меня возникают трудности с написанием спецификации для действия индекса контроллера, пытающегося проверить. Контроллер выглядит следующим образом:index rspec test failing
class MyGamesResultsController < ApplicationController
def index
@contest = Contest.find(params[:contest_id])
@my_entry = current_user.entries.where(contest_id: params[:contest_id])
@points_per_player = @my_entry[0].points_per_player
@total_points = @my_entry[0].total_points
end
end
и мой спецификации выглядит следующим образом:
require 'rails_helper'
RSpec.describe MyGamesResultsController, type: :controller do
describe 'GET /index' do
let!(:user) { create(:user) }
before :each do
sign_in user
get :index
end
it 'renders the index template' do
expect(subject).to render_template(:index)
end
end
end
ошибка, что спецификация возвращает говорит следующее:
Сбой/Ошибка: получаем: индекс ActiveRecord: : RecordNotFound: Не удалось найти Конкурс с 'id' =
Может ли кто-нибудь выяснить, что не так?
Ваш тест симулировать запрос GET к '/ index', но в вашем контроллере вы используете' Params [: contest_id] ', чтобы найти запись Contest. Вы уверены, что этот 'contest_id' указан в хэше params в вашем тесте? – MrYoshiji
Я не думаю, что contest_id задан в хэше params в моем тесте. Как мне это сделать? Мне жаль, что я должен был упомянуть, что я новичок в rails – NdaJunior
Я думаю, что это так просто, как следующее: 'get: index, contest_id: some_id' (где переменная' some_id' содержит фактический идентификатор конкурса, который вы можете найти перед вызовом 'get') – MrYoshiji