[RSpec 3] Rails の Ajax 処理を RSpec でテストする
前回のシンプルな例へのテストコードを書いてみる。
こちらを参考にさせて頂きました。
RSpec
FactoryGirl でオブジェクトを生成できるように準備する。
FactoryGirl.define do
factory :item do
name 'foo'
title 'bar'
description 'buzz'
:
xhr
method でリクエストを投げる。
引数は request_method, path, parameters, headers_or_env
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'Items', type: :request do
describe 'Search' do
describe 'GET /items/search' do
it 'works!' do
get search_items_path
expect(response).to have_http_status(200)
end
end
describe 'Search items with Ajax' do
before do
create_list(:item, 9)
create(:item, name: 'キーワードを含む名前', title: 'タイトル')
end
it 'returns 10 items' do
xhr :post, result_items_path, keyword: 'buzz'
expect(assigns[:results].size).to eq(10)
end
it 'returns no item' do
xhr :post, result_items_path, keyword: 'keyword'
expect(response.body).to match('No items found.')
end
it 'returns a item' do
xhr :post, result_items_path, keyword: 'キーワード'
expect(response.body).to match('タイトル')
end
end
end
end
こちらで勉強中。