在我的规范中,我正在访问一个页面并检查实例变量是否设置正确。规范总是说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。