Rspec方法创建错误

时间:2014-10-15 16:59:18

标签: ruby-on-rails testing methods rspec

我尝试在我的控制器中测试方法创建:

def create
    @fund = Fund.new({started_at: Date.strptime(params[:fund].delete(:started_at), '%m/%d/%Y')}.merge(fund_params))
    if @fund.save
      flash[:alert] = "Fund #{@fund.name} saved!"
      redirect_to funds_path
    else
      flash[:error] = "Fund #{@fund.name} could not be saved"
      render :edit
    end
end

文件规范:

it 'Can create a new fund' do
    fund = FactoryGirl.create(:fund)
    post :create
    expect(response).to redirect_to(funds_path)
end

并显示此错误:

NoMethodError: undefined method `delete' for nil:NilClass

错误在此行中,对于方法' delete':

 @fund = Fund.new({started_at: Date.strptime(params[:fund].delete(:started_at),...

我不知道如何解决这个问题,谢谢。

1 个答案:

答案 0 :(得分:1)

正如错误消息所示,那是因为params[:fund]nil。尝试将适当的参数发送到create操作:

post :create, fund: { add_here_needed_params_for_this_action }

示例:

post :create, fund: { started_at: Date.today }