【问题标题】:Rspec method create errorRspec方法创建错误
【发布时间】:2014-12-10 20:27:18
【问题描述】:

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

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),...

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

【问题讨论】:

    标签: ruby-on-rails testing methods rspec


    【解决方案1】:

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

    post :create, fund: { add_here_needed_params_for_this_action }
    

    例子:

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

    【讨论】:

    • 是的,这是一个很好的建议,我会试试的
    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多