我尝试在我的控制器中测试方法创建:
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),...
我不知道如何解决这个问题,谢谢。
答案 0 :(得分:1)
正如错误消息所示,那是因为params[:fund]
是nil
。尝试将适当的参数发送到create
操作:
post :create, fund: { add_here_needed_params_for_this_action }
示例:
post :create, fund: { started_at: Date.today }