Подтвердить что ты не робот

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

Работа с тестом:: 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] равен нулю.

4b9b3361

Ответ 1

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

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

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

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

Ответ 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"