[英]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.