Ruby on rails 测试嵌套控制器:NoMethodError:undefined方法“empty”和#x27;零级:零级
我一直在努力让我的控制器测试通过。。。 我的路线.rbRuby on rails 测试嵌套控制器:NoMethodError:undefined方法“empty”和#x27;零级:零级,ruby-on-rails,controller,factory-bot,rspec-rails,slug,Ruby On Rails,Controller,Factory Bot,Rspec Rails,Slug,我一直在努力让我的控制器测试通过。。。 我的路线.rb namespace :school do resource :account, :except => [:new, :create, :destroy], :controller => 'account' resources :classes, :path => "" do resources :discussions do resources :comments end resources
namespace :school do
resource :account, :except => [:new, :create, :destroy], :controller => 'account'
resources :classes, :path => "" do
resources :discussions do
resources :comments
end
resources :materials
end
end
我的DiscussionController规格:
describe "POST 'create'" do
before(:each) do
@user = FactoryGirl.create(:coordinator_user)
login_user(@user)
@klass = FactoryGirl.build(:klass)
@klass.creator = @user
@klass.save
@parameters = FactoryGirl.attributes_for(:discussion, :klass_id => @klass, :user_id => @user)
end
context "with valid parameters" do
it "creates a new job" do
expect { post :create, :class_id => @klass.id, :discussion => @parameters }.to change(Discussion, :count).by(1)
end
it "should create a new discussion" do
post :create, :class_id => @klass.id
response.should be_redirect
response.should redirect_to(school_account_path(assigns(:discussion).id))
assigns(:discussion).should_not be_nil
assigns(:discussion).should_not be_new_record
end
end
我得到错误:1)NoMethodError:nil:NilClass#/lib/slug的未定义方法empty?.rb:3:in
slug'
无法理解此处的“零”是什么。如何调试??我试图打印PP@klass.id。。它会打印klass id。对在ROR中学习测试有什么建议吗?学习资源??你的模型看起来怎么样?您使用的是友好的_id gem,还是slug.rb是您自己的助手类?请您也发布相关代码。这是slug代码:def slug if not response_to?:name还是name.empty?id else“#{id}-#{name}”。到_url end def到_param slug end似乎,该名称为nil..这就是为什么会出现nil:NilClass错误。“名字”来自哪里?您可以将此方法放入您的模型中,然后实例和instance.name可用..我选中了pp discussion.name它不是nil。。。不知道这里什么是零??