ruby on rails polymorphic Как вы определяете параметры POST в тесте Rails?



shoulda matchers polymorphic (2)

post :create, {:post => {}, :user => {:email => '[email protected]'} }

В этом случае params [: post] - {}, params [: user] - {: email => 'abc @ abcd'}, params [: user] [: email] - это 'abc @ abcd'.

post :create, {:post => {:user => {:email => '[email protected]'} } }

В этом случае params [: post] [: user] [: email] - это 'abc @ abcd'

Работа с тестом :: Unit и Shoulda. Попытка проверить Users.create . Я понимаю, что Rails формы отправляют параметры для объекта следующим образом:

user[email]

Что превращается в хеш в вашем действии, правильно?

params[:user][:email]

Хорошо, поэтому в своем тесте я пробовал ...

setup { post :create, :post => { 'user[email]' => '[email protected]' } }

а также

setup { post :create, :post => { :user => { :email => '[email protected]' } } }

В обоих случаях, в моем действии, params[:user] равен нулю.


Answer #1
post :create, :user => { :email => '[email protected]' }

Общий вид для всех методов тестирования get, post, put, delete выглядит следующим образом:

def post(action_name, params_hash = {}, session_hash = {})

И в тестах хеш params напрямую отправляется в params вашего действия контроллера без какого-либо перевода. Даже делая интеграционное тестирование, вам действительно не нужно тестировать эту строку на перевод params, поскольку он очень хорошо покрывается проверками на основе rails. Плюс все методы тестирования, которые нуждаются в параметрах, принимают хэш таким образом, без жалоб, делая вещи легкими для вас.





shoulda