簡體   English   中英

Rspec測試得到:無

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM