2016-07-19 7 views
0

私は基本的なrspecテストをしようとしています。 updated_atの、 "2016年7月19日11時58分28秒":「2016年7月19日11のcreated_at、4:予想:レビューID:8、評価Rspec test got: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 

しかし、私は失敗を取得しています:58:28" 、USER_ID:nilに、game_id: nilを得た:

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

validates_uniqueness_of :user_id 
end 

は、あなたがそれを必要とする場合には
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 

、ここでのレビューモデルです:

私ReviewsControllerは、このようになりますnilを

それはuser_idのかgame_idを求めている理由、それは唯一のレビューについてですので、私はあなたが

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

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

下記変更する必要があります..

+0

モデルの関連付けのために、そのエラーメッセージが表示されます。レビューはゲームとユーザーに属しているため、レビューの作成には割り当てられたゲームとユーザーIDが必要です。 – Ren

答えて

0

を理解していません理由は@reviewsは、コントローラのアクション#index内にあるインスタンス変数です。@reviewではありません。

+0

ありがとうございます。私はまだまったく同じエラーが発生していますが、少なくとも1つは間違いです。 – Jakeroo

+0

新しいエラーはどうですか? –

+0

障害: 1)ReviewsController GET #INDEXが 失敗/エラーを@reviewsする新しいレビューを割り当てます(割り当て(:レビューを)期待しています。)(【レビューを] eqでする) 予想:[#<レビュー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>] got:nil – Jakeroo