基本構文
appオブジェクトを利用することでrails console
上からControllerへリクエストを送れます。
基本構文は以下の通りです。
### パラメーターなしの場合
$ app.[リクエストメソッド] [パス]
### パラメーターありの場合
$ app.[リクエストメソッド] [パス], params: [パラメータ]
helperオブジェクトを利用すると以下のように記述できます。
### パラメーターなしの場合
$ app.[リクエストメソッド] app.[URLヘルパーを利用したパス名]
### パラメーターありの場合
$ app.[リクエストメソッド] app.[URLヘルパーを利用したパス名], params: [パラメータ]
リクエストの結果はapp.response.body
で取得できます。
具体例
class HealthController < ApplicationController
def show
render json: { message: 'ok' }, status: :ok
end
end
上記のようなapp/health_controller.rb#show
へrails console
からリクエストを送る場合は以下のようになります。
$ rails c
# app.get "/health" でもOK
> app.get app.health_path
=> 200
> JSON.parse(app.response.body)
=> {"message"=>"ok"}
以下の結果をみてわかる通り、引数params
はController上でActionController::Parametersとして扱われます。
> app.get app.health_path, params: { name: 'foo' }
From: /app/app/controllers/health_controller.rb:3 HealthController#show:
2: def show
=> 3: binding.pry
4: render json: { message: 'ok' }, status: :ok
5: end
> params
=> #<ActionController::Parameters {"name"=>"foo", "controller"=>"health", "action"=>"show"} permitted: false>
> params.class
=> ActionController::Parameters
> params[:name]
=> "foo"