2

私は Rails で TDD を初めて使用し、単純な表示ページについて「Everyday Rails Testing with Rails」という本を使用して videos_controller をテストしようとしていますが、次のようにエラー「nil」が表示され、空にレンダリングされます。しかし、私は自分が間違っていることを本当に知りません。教えてください。ご協力ありがとうございました。

仕様/コントローラー/videos_controller_spec.rb

require 'spec_helper'

describe VideosController do
  describe "GET show" do
   before {@video1 = Video.create!(title: 'Family Guy', description: 'Some description')}

     it "assigns the requested video to the @video" do
      get :show, id: @video1
      assigns(:video).should == @video1
    end

    it "render show tempalte" do
      get :show, id: @video1
      response.should render_template :show
    end
  end
end

app/controllers/videos_controller.rb

class VideosController < ApplicationController
  before_filter :require_user  

  def show 
    @video = Video.find(params[:id])
  end
end

端末でエラーが発生しました:

Failures:

  1) VideosController GET show assigns the requested video to the @video
     Failure/Error: assigns(:video).should == @video1
   expected: #<Video id: 1, title: "Family Guy", small_cover_url: nil, large_cover_url: nil, description: "Some description", created_at: "2013-05-13 00:12:32", updated_at: "2013-05-13 00:12:32">
        got: nil (using ==)
 # ./spec/controllers/videos_controller_spec.rb:9:in `block (3 levels) in <top (required)>'

  2) VideosController GET show render show tempalte
     Failure/Error: response.should render_template :show
   expecting <"show"> but rendering with <"">
 # ./spec/controllers/videos_controller_spec.rb:14:in `block (3 levels) in <top (required)>
4

1 に答える 1

2

before_filterインコントローラーあり

before_filter :require_user

テストで必要なアクションを提供していないため、実際のアクションshowにはまだ到達していません。

修正するには、前にユーザーまたはログインの作成などの必要なアクションを追加するだけですget :show

于 2013-05-13T02:35:40.737 に答える