Я использую Ruby on Rails 3.1.0 и гем rspec-rails 2. Я хотел бы проверить перенаправление JavaScript, но у меня возникли некоторые проблемы с этим.
В моем файле контроллера у меня есть:
respond_to do |format|
format.js { render :js => "window.location.replace('#{users_url}');" }
end
В моем файле спецификации у меня есть:
it "should redirect" do
xhr :post, :create
response.should redirect_to(users_url)
end
Если я запускаю спецификацию, я получаю следующее:
Failure/Error: response.should redirect_to(users_url)
Expected response to be a <:redirect>, but was <200>
Как реализовать код спецификации для корректной проверки перенаправления JavaScript?
ПОПЫТКИ ПРИ РЕШЕНИИ
Если я использую
response.should render_template("window.location.replace('#{users_url}');")
Я получаю
Failure/Error: response.should render_template("window.location.replace('#{users_url}');")
expecting <"window.location.replace('http://<my_application_url>/users');"> but rendering with <"">
Если я использую
response.should render_template(:js => "window.location.replace('#{users_url}');")
спецификация успешно проходит, но слишком много! То есть я могу также заявить следующее, и спецификация (неожиданно) пройдет:
response.should render_template(:js => "every_thing")
Я также видел этот вопрос \ ответ , и предлагаемое решение работает, но я думаю, что это лучшее решение для достижения моей цели.