簡體   English   中英

rspec控制器放置更新測試不起作用

[英]rspec controller put update test not working

我陷入了rspec測試中,該測試正在測試控制器中的更新方法。 我收到路由錯誤。 希望有人比我能幫上忙。 我已經用Google搜索並閱讀了該網站上的許多帖子,但是沒有一個打開我的頭上的燈泡。

注意:這在通過瀏覽器查找和更新記錄時有效。 只是無法弄清楚它的測試。

此控制器更新方法的“我的路線”:

PUT    /admins/project_codes/:id(.:format)          admins/project_codes#update

我的控制器更新方法:

def update
  @project_code = ProjectCode.find(params[:project_code][:id])
  if @project_code.update_attributes(params[:project_code])
    redirect_to(:action => :show, :id => params[:project_code][:id])
  else
    redirect_to(:action => :edit, :id => params[:project_code][:id], :notice => "Your record for #{params[:project_code][:code]} could not be updated at this time.")
  end
end

編輯表單對字段使用name =“ project_code [...]”:即:

<input id="project_code_code" name="project_code[code]" size="10" type="text" value="F-UZBEKIST" /

因此,在測試中,我需要創建一條記錄,然后更新一個字段並將其傳遞給我的更新方法。 我正在嘗試創建params [:project_code]傳遞給該方法。

規格:

describe "PUT #update" do
  it "updates with valid name change" do
    code = FactoryGirl.create(:project_code)
    code.name = "new-name"
    put :update, :project_code => code.attributes
    ...
  end
end

我的錯誤:

1) Admins::ProjectCodesController PUT #update updates with valid name change
 Failure/Error: put 'update', :project_code => code.attributes
 ActionController::RoutingError:
   No route matches {:project_code=>{"id"=>"10375", "code"=>"ABCDEFG", "name"=>"new-name", "update_by"=>"jdc44", "created_at"=>"2015-10-07 13:22:31 -0400", "updated_at"=>"2015-10-07 13:22:31 -0400"}, :controller=>"admins/project_codes", :action=>"update"}

任何幫助,將不勝感激。

看來您的PUT /admins/project_codes/:id(.:format)在url中需要一個:id參數,請嘗試發送以下內容:

put :update, :id => code.id, :project_code => code.attributes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM