2016-07-19 3 views
0

Я пытаюсь выполнить базовый тест rspec, который выглядит следующим образом:Тест Rspec получил: nil

require 'rails_helper' 

    describe ReviewsController do 

    describe "GET #index" do 
    it "assigns a new review to @reviews" do 
    review = Review.create(rating: 4) 

    get :index 

    expect(assigns(:review)).to eq([review]) 
    assert_response :success 
    end 
end 
end 

Но я получаю отказ: ожидаемое отзыв ID: 8, Рейтинг: 4, created_at: "2016-07-19 11:58:28", updated_at: «2016-07-19 11 : 58: 28" , user_id: ноль, game_id: ноль получил: ноль

Мой ReviewsController выглядит следующим образом:

class ReviewsController < ApplicationController 

    def index 
    @reviews = Review.all 
    end 

    def show 
    @review = Review.find(params[:rating]) 
    end 

    def create 
    review = Review.new(review_params) 

    respond_to do |format| 
    if @review.save 
    format.html { redirect_to root_url, notice: 'Review was successfully updated.' } 
    format.json { render :show, status: :ok, location: @review } 
    else 
    format.html { render :new } 
    format.json { render json: @review.errors, status: :unprocessable_entity } 
    end 
    end 
end 

    private 

    def post_params 
    params.require(:post).permit(:message) 
    end 
end 

В случае, если вам это нужно, вот обзор модели:

class Review < ActiveRecord::Base 
belongs_to :user 
belongs_to :game 
validates_presence_of :rating 

validates_uniqueness_of :user_id 
end 

Я не понимаю, почему это просить user_id или game_id, потому что это только отзывы ..

+0

Вы получаете это сообщение об ошибке из-за ассоциации в ваших моделях. Обзор принадлежит Game and User и поэтому при создании Review должен быть присвоен игровой и пользовательский идентификатор. – Ren

ответ

0

Вы должны изменить ниже

expect(assigns(:review)).to eq([review]) 

в

expect(assigns(:reviews)).to eq([review]) 

причина @reviews - это переменная экземпляра, которую вы используете внутри действия контроллера #index, а не @review.

+0

Спасибо. Я все равно получаю ту же самую ошибку, но, по крайней мере, это одна ошибка меньше. – Jakeroo

+0

Какая новая ошибка, пожалуйста? –

+0

Неудачи: 1) ReviewsController GET #index назначает новый обзор для @reviews Failure/ошибка: ожидать (правопреемники (: отзывы).) К уравнению ([обзор]) ожидается: [# <Обзор ID: 10 , рейтинг: 4, created_at: «2016-07-19 12:29:57», updated_at: «2016-07-19 12:29:57», user_id: nil, game_id: nil>] получил: nil – Jakeroo

Смежные вопросы