私の仕様では、ページにアクセスして、インスタンス変数が正しく設定されていることを確認しています。assigns
仕様は、がゼロであると常に言っています。保存されたページを見ると、404 やその他のエラー ページではなく空白です。
describe ArtistsController do
before :each do
@artist = Artist.first
end
describe "GET #about" do
it "finds artist by artistname" do
visit artist_about_path(@artist.artistname); save_page
puts "2 ===================== #{ artist_about_path(@artist.artistname) }"
# assigns(:artist).should eq(@artist)
assigns[:artist].should_not be_nil
end
it "renders the :about view" do
visit artist_about_path(@artist.artistname)
# response.should render_template :about
response.should be_success
end
end
# Similar specs for other pages to be rendered
Artist.first
データベースにデータを入力するために spec_helper で実行されている rake タスクに由来します。その部分は他のテストで正しく機能します。
印刷してパスを確認していますが、問題ないようです。コントローラーのメソッド:
class ArtistsController < ApplicationController
before_filter :get_artist_from_params
def about
@artist = Artist.find_by_artistname(params[:artistname].downcase)
@contact_info = @artist.contact_info
puts "1 ==============================="
puts @artist.inspect
end
サーバー ログで@artist
は、 が期待されるオブジェクトです。
def get_artist_from_params
if !params[:artistname].blank?
@artist = Artist.find_by_artistname(params[:artistname].downcase)
if @artist.blank?
not_found
end
end
end
テストのどこが間違っているのかわかりません…puts
正しい値を出力しています。
Ruby 2.0、Rails 3.2、Capybara 2.1、Rspec 2.12 を使用。