LoginSignup
1
1

More than 1 year has passed since last update.

【RSpec】JSONの値を確認するテスト

Posted at

環境

Ruby 3.0.2
Rails 6.1.4.1

APIのリクエストテスト

gemを使わずにjsonが期待通りに取れているかのテストを書くとこうなる。

describe "GET /api/v1/fruits" do
    subject { get '/api/v1/fruits', headers: headers }
    let!(:available_fruits1) { create(:fruit) }
    let!(:available_fruits2) { create(:fruit) }
    let!(:unavailable_fruits) { create(:fruit, :unavailable) }

  it '旬の果物を返すこと' do
    subject
    json = JSON.parse(response.body)
    expect(response.status).to eq 200

    # 果物が3つあり、そのうち旬の果物が2つ、旬じゃないのが1つ。jsonで取れるのは果物が2つ
    expect(json['fruits'].length).to eq 2

    # 旬の果物の2つは含まれているか
    expect(json['fruits'][0]).to include({"id"=>available_fruits1.id})
    expect(json['fruits'][1]).to include({"id"=>available_fruits2.id})

    # 旬でない果物は含まれていないか
    expect(json['fruits'][0]).not_to include({"id"=>unavailable_fruits.id})
    expect(json['fruits'][1]).not_to include({"id"=>unavailable_fruits.id})
  end
end

参考

1
1
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
1
1