Eth*_*han 22 ruby testing ruby-on-rails shoulda
使用Test :: Unit和Shoulda.试着去测试Users.create
.我的理解是Rails表单为这样的对象发送params:
user[email]
Run Code Online (Sandbox Code Playgroud)
在你的行动中变成哈希,对吧?
params[:user][:email]
Run Code Online (Sandbox Code Playgroud)
好的,所以在我的测试中我试过......
setup { post :create, :post => { 'user[email]' => 'invalid@abc' } }
Run Code Online (Sandbox Code Playgroud)
和
setup { post :create, :post => { :user => { :email => 'abc@abcd' } } }
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,在我的行动中,params[:user]
都是零.
Ale*_*yne 44
post :create, :user => { :email => 'foo@bar.com' }
Run Code Online (Sandbox Code Playgroud)
get,post,put,delete的所有测试方法的一般形式如下:
def post(action_name, params_hash = {}, session_hash = {})
Run Code Online (Sandbox Code Playgroud)
在测试中,params哈希直接发送到params
你的控制器动作,没有任何类型的翻译.即使进行集成测试,你也不需要测试这个字符串来转换params,因为它的rails框架测试非常好.此外,所有需要params的测试方法都会以这种方式接受哈希,而不会让您感到轻松.
小智 8
post :create, {:post => {}, :user => {:email => 'abc@abcd'} }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,params [:post]是{},params [:user]是{:email =>'abc @ abcd'},params [:user] [:email]是'abc @ abcd'.
post :create, {:post => {:user => {:email => 'abc@abcd'} } }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,params [:post] [:user] [:email]是'abc @ abcd'
归档时间: |
|
查看次数: |
19181 次 |
最近记录: |