【发布时间】:2014-10-06 18:50:24
【问题描述】:
我对 rspec 方式还是很陌生。我在redirect_to 上阅读了许多帖子,但似乎无法通过此错误。我试图在我的 rspec 测试中模拟表单变量/值的传递,但出现路由错误。我正在将测试转换为 rspec 测试,该测试正在运行且正在运行的应用程序上。
在我的 employees_micros_controller.rb 中,我有一个更新方法,它需要 params[:employees_micro][:id]。我的问题是如何在我的 rspec 测试中模拟这个?
控制器:
def update
@em = nil
# check for id from form
if params[:employees_micro][:id]
@em = EmployeesMicro.find_by_id(params[:employees_micro][:id])
end
....
end
Rspec 测试:注意:### 错误行###
# update and redirect
describe 'POST #update' do
it "updates employee_micro and redirect to employee_details" do
# @emp_micros set in before(each) above
@emp_micros.home_job = 123
# update method looks for params[:employees_micro][:id]
post :update, :employees_micro => { :id => @emp_micros } ### error line ###
expect(response).to redirect_to("employee_details_employee_path")
end
end
错误:
Failure/Error: post :update, :employees_micro => { :id => @emp_micros }
ActionController::RoutingError:
No route matches {:employees_micro=>{:id=>"11960"}, :controller=>"employees_micros", :action=>"update"}
我的>>帖子:更新行语法正确吗?
我不明白路由错误。我只是想模拟将表单变量从我的测试传递给更新方法。如果我删除 post/put 行之后的所有内容,我仍然会收到相同的错误,所以它肯定在该行。
我还尝试在测试中使用“put”代替“post”。它给我带来了同样的错误。
感谢任何提示或建议。
【问题讨论】:
标签: ruby-on-rails rspec