Почему этот тест контроллера при создании действия не выполняется? - PullRequest
0 голосов
/ 09 февраля 2009

Я получаю неуспешный тест, который мне трудно понять. Я использую Test :: Unit с улучшением Следует. Действие в users_controller.rb Я пытаюсь проверить ...

def create
  unless params[:user][:email] =~ / specific regex needed for this app /i

    # ...

    render :template => 'sessions/new'
  end
end

Тест ...

context 'on CREATE to :user' do
  context 'with invalid email' do
    setup { post :create, { 'user[email]' => 'abc@abcd' } }
    should_respond_with :success
  end
  # ...
end

Сбой из-за того, что "response to a <: success>, но был <302>". Как это 302?

Изменить действие на ...

def create
  render :template => 'sessions/new'
end

Тест все еще не пройден.

Ответы [ 2 ]

1 голос
/ 09 февраля 2009

@ Ола: Вы не правы: POST подключен к созданию. PUT обычно подключен к обновлению.

A: запрещено - тихо, странно. Вот несколько советов, чтобы найти проблему (я никогда не использовал Следует, но я не думаю, что это проблема с Должой.

  1. Убедитесь, что маршрут определен в config / rout.rb и проверьте с помощью rake route
  2. Есть ли у вас before_filters, которые могут быть ответственны за такое поведение (фильтр входа в аккаунт, actions_as_authenticated и т. Д.) Оформить заказ log / test.log. Там появляется остановка в цепочке фильтров.
  3. Распечатайте тело ответа помещает response.body , чтобы увидеть, что вы получите.

Надеюсь, это поможет.

0 голосов
/ 09 февраля 2009

Если вы используете стандартные URL-адреса REST, вам, вероятно, следует использовать PUT, а не POST ... Поскольку PUT подключен для создания, POST к этому URL-адресу даст вам несанкционированный доступ и перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...