私はコトローラーのテストを書いていますが、成功していません。私のテストは:
describe VideosController do
describe 'index' do
it 'should select the index template for rendering' do
Video.stub(:video_exists?).with("KgfdlZuVz7I").and_return(true)
get :index, { :q => "KgfdlZuVz7I" }
response.should render_template('index')
end
end
end
これがコントローラーです。
class VideosController < ApplicationController
def index
if params[:q]
params_hash = CGI::parse(params[:q])
if Video.video_exists?(params_hash.values[0][0])
video = Video.new :video_id => params_hash.values[0][0]
if video.save!
flash[:notification] = "Video found."
else
flash[:notification] = "Video found but not saved to database."
end
redirect_to root_path
else
flash[:notification] = "Video not found."
redirect_to root_path
end
end
end
end
テストに合格せず、次のメッセージが表示されます。
VideosControllerインデックスは、レンダリングの失敗/エラーのインデックステンプレートを選択する必要があります:get:index、{:q => "KgfdlZuVz7I"} receive:video_exists?予期しない引数が予想されます:( "KgfdlZuVz7I")got :(引数なし)メッセージが他の引数でも受信される可能性がある場合は、最初にデフォルト値をスタブしてください。#。/ app / controllers / videos_controller.rb :5:in
index' # ./spec/controllers/videos_controller_spec.rb:12:in
ブロック(3レベル)in '
video_existsだけをスタブしたので、ビデオを正しい方法でスタブしていないと思いますか?しかし、新しくはなく、保存します。しかし、私はTDDとRspecを初めて使用するため、これを解決する方法がわかりません。