ruby
1 class HogeController 2 def create 3 res = post_request 4 if res.success? 5 render status: res['status'], json: { message: '成功' } 6 else 7 省略 8 end 9 end 10 11 def post_request 12 FaradayでPOSTしている 13 end 14 end
post_requestメソッド内では外部APIにリクエストを飛ばしているとします。
上記のような処理をテストする際に、
ruby
1 describe '作成' do 2 it 'リクエスト送信ができる' do 3 obj = double(body: { status: 201, message: '成功' }.to_json) 4 allow_any_instance_of(Faraday::Connection).to receive(:post).and_return(obj) 5 res = HogeControlle.new.create 6 expect(res['status']).to eq(201) 7 end
のようにしてます(実際のコードと比べるとだいぶ簡略化してますが、質問する上での情報としては問題ありません)
ただ、こうすると
ruby
1if res.success?
の部分で
received unexpected message :success with (no args)
とエラーが出てしまいます。
successはHTTPレスポンスにあるメソッドなので、スタブしようとしてもHogeController内にはsuccessメソッドがないためできません。。。
このような場合どうしたらよいのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/31 02:46