ПРЕДУПРЕЖДЕНИЕ ОБ УСТРАНЕНИИ: Методы HTTP-запроса ActionController::TestCase будут принимать только ключевые аргументы в будущих версиях Rails

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

Вот мой тест>

describe HighVoltage::PagesController, '#show' do
  %w(about conditions).each do |page|
    context "on GET to /pages/#{page}" do
      before do
        get :show, id: page
      end

      it { should respond_with(:success) }
      it { should render_template(page) }
    end
  end
end

А вот и предупреждение об устаревании.

*DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only
keyword arguments in future Rails versions.

Examples:

get :show, params: { id: 1 }, session: { user_id: 1 }
process :update, method: :post, params: { id: 1 }
 (called from block (4 levels) in <top (required)> at /Users/kimmo/Documents/care-city/spec/controllers/pages_controller_spec.rb:5)
DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only
keyword arguments in future Rails versions.

1 ответ

Решение

Вы должны добавить "params:" для ваших параметров

get :show, params: {id: page}

Вы можете передать больше ключевых слов для заголовков и других настроек для запроса

РЕДАКТИРОВАТЬ: обратите внимание, что фактическая ошибка, которую вы копировали, уже говорит вам сделать это

"Примеры:

get: show, params: {id: 1}, сессия: {user_id: 1}

process: update, method:: post, params: {id: 1} "

Другие вопросы по тегам