[英]Rspec test got: nil
我正在嘗試進行基本的rspec測試,如下所示;
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,因為它只與評論有關。
您必須更改以下內容
expect(assigns(:review)).to eq([review])
至
expect(assigns(:reviews)).to eq([review])
原因是@reviews
是您在#index
控制器操作中擁有的實例變量,而不是@review
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.