我在ROR应用程序中进行RSpec测试,我需要模拟一个post动作以测试一个控制器。
正常使用是这样的:
post :candidate, candidate: FactoryGirl.attributes_for(:candidate)
我的问题是我还需要传递来自网址的ID。动作网址是这个:
candidates POST /positions/:id/candidate(.:format) positions#candidate
所以我需要的是这样的东西:
post :candidate, candidate: FactoryGirl.attributes_for(:candidate), id: position.id
如何使用对象属性和id来模拟发布请求?
在正常使用中,rails服务器中的输出为:
Parameters: {"utf8"=>"✓", "candidate"=>{"first_name"=>"John", "last_name"=>"Doe", "email"=>"john@gmail.com", "phone_number"=>"+351911111111", "skype_id"=>"qwe", "linkedin_url"=>"qwe", "why_work_with_us"=>"qwe", "resume_url"=>"qwe", "portfolio_url"=>"qwe"}, "id"=>"2"}
答案 0 :(得分:1)
您可以使用参数哈希发送所有必需的参数。因此,构建一个params哈希,然后将其传递给post
调用,如下所示:
let(:params) { { candidate: FactoryGirl.attributes_for(:candidate), id: position.id } }
post :candidate, params