LoginSignup
0
0

jbuilderでjson.statusとして返却しようとするとrspecでhttp response statusが0で返却された問題

Posted at

原因は分かっていないが、rails, grape, jbuilderを利用している際にresponse.statusだけ0になってしまう問題に直面した。
jsonのresponse等は問題無かった。

# grape api

class Api::V1::Order < Grape::API
  get "/status", jbuilder: "v1/order/status.jbuilder" do
    @status = true
  end
end
v1/order/status.jbuilder
json.status @status
order_spec.rb
describe Api::V1::Order, type: :request do
  describe '#status' do
    subject { get "v1/order/status", header: header }
    let(:header) { ... }
    it 'true' do
      subject
      # ここが0で返却される
      expect(response.status).to eq 200
      # responseのjsonはきちんと返却される
      expect(JSON.parse(response.body)[:status]).to be_truthy
    end
  end
end

他の問題無く動いているコードと比較してみた所、jbuilderでjson.statusという名前を使っている場合のみresponse.statusが0で返却される事がわかった。
なので、jbuilderでstatusという単語を使わないようにして解決。
問題自体は解消したが、jbuilderやgrape等何かしらの予約語に引っかかってダメなのか、rspec側なのか、問題の切り分けが調べても分からなかったのでもやもやしたままである。
statusというよくある単語で問題になるのなら調べたらすぐ出ると思うが...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0