Вебрат ищет действия, в которых он не нуждается - PullRequest
1 голос
/ 22 июля 2011

Сценарий

У меня есть контроллер только с двумя действиями - :create и :delete. Где действие создания определяется следующим образом:

def create
  # some code...
  if @thing.save
    redirect_to :back, :notice => "Successfully created."
  else
    redirect_to :back, :notice => "Successfully deleted."
  end
end

Я ссылаюсь на действие, используя ...

<%= link_to "Become a friend", things_path(...), :method => :post %>

... в представлении.

Задача

Это прекрасно работает, когда я взаимодействую с приложением в своем браузере. Однако я хочу протестировать эту функциональность, используя интеграционное тестирование RSpec, используя вспомогательный метод Webrat - click_link "Become a friend" - который я считаю правильным. Но я получаю эту ошибку

Failure/Error: click_link "I like Person-1's taste"
AbstractController::ActionNotFound:
  The action 'index' could not be found for ThingsController

Я могу создать пустое действие index в контроллере Things, но это нарушит Принцип KISS .

Вопросы * * 1023 Как я могу обойти / исправить это? И есть ли лучшие практики для подобных случаев?

1 Ответ

0 голосов
/ 22 июля 2011

Проблема в том, что: method =>: post заставляет рельсы создавать форму, которая затем отправляется при нажатии на ссылку.Это работает только с включенным JavaScript, который вебрат не поддерживает из коробки.Взгляните на https://github.com/brynary/webrat/wiki и попробуйте запустить тест с селеном.Поскольку селен фактически использует настоящий браузер, ваши спецификации должны работать.

...