お世話になっています。
現在、rspecのrequestを使用してモックを作ろうとしています。
mockを作りたい理由として、任意のapiテストを実行する際、その前に認証関数が実行されてしまうのでそこをパスしたいです。
it 'return response status 200' do post api_v1_hoge_path(format: :json) expect(response).to be_success end
単にapiが実行された後に成功するかどうかを確認するものです。
しかし、こちらのapiは、親クラスで定義されている、
def authenticate head :unauthorized end
こちらの認証関数がbefore_actionで設定されていので、authenticateでfalseになってしまいます。(本来はログインした後に実行するapiなので)
解決策としてこちらのapiを実行する前にlogin_apiを叩いて、そのトークンをheaderに設定するか
mockを作成してauthenticateメソッドが呼ばれたら、trueを返すように設定するかだと思います。
そこで後者の選択肢がを選んだのですが、
allow(ApplicationController).to receive(:authenticate).and_return(true)
でmockを作成できると考えたのですが、authenticateが定義されてないとエラーになってしまいます。
何かアドバイスいただけたら幸いです。
あなたの回答
tips
プレビュー