简体   繁体   中英

index rspec test failing

Im having difficulties with writing a spec for an index action of a controller im trying to test. The controller looks like this:

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 

and my spec looks like this:

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 

The error that the spec returns says this:

Failure/Error: get :index ActiveRecord::RecordNotFound: Couldn't find Contest with 'id'=

Can anyone figure out what is wrong?

Solved it! had to do this:

require 'rails_helper'

RSpec.describe MyGamesResultsController, type: :controller do
  describe "GET index" do

   let!(:user) { create(:user) }
   let!(:contest) { create(:contest) }
   let!(:my_entry) { create(:entry, user_id: user.id, contest_id: contest.id) }


   before :each do
     sign_in user
     get :index, contest_id: contest.id
   end

   it "renders the index template" do
    (expect (response.status)).to eql(200) 
   end
 end
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM