【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현
소개
서비스 품질을 유지하기 위해 필수적인 테스트를 실시하고 있습니다.
이번에는 ransack을 사용하여 구현한 검색 기능의 결합 테스트를 구현하고 그 구현 내용을 기사로 해 나가고 싶습니다.
전제
· ransack이라는 gem을 사용하여 검색 기능이 구현되었습니다.
gem 'ransack'
· 투고시의 결합 테스트와 같은 테스트 파일에 검색 기능의 내용도 기술하고 있습니다.
투고시에 있어서의 테스트 코드의 기술은 이하의 URL보다 보실 수 있습니다.
버전
루비 버전 ruby-2.6.5
Rails 버전 Rails:6.0.0
rspec-rails 4.0.0
실시한 테스트
검색 화면
키워드 검색을 할 수 있고, 검색하면 투고한 타이틀이 표시된다.
정의 테이블의 열 소개
xxx_create_definitions.rbclass CreateDefinitions < ActiveRecord::Migration[6.0]
def change
create_table :definitions do |t|
t.text :title, null: false
t.text :body, null: false
t.references :user, foreign_key: true
t.timestamps
end
end
end
검색 관련 컨트롤러 내용
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
#省略
before_action :set_search
def set_search
#省略
@definition_key = Definition.ransack(params[:q])
@search_definitions = @definition_key.result(distinct: true).page(params[:page])
#省略
end
#省略
end
※view에 관한 기술의 게재는 생략하고 있습니다.
모델의 유효성 검사
app/models/definition.rbclass Definition < ApplicationRecord
belongs_to :user
has_many :answers, dependent: :destroy
has_many :reviews, dependent: :destroy
has_many :notifications, dependent: :destroy
has_many :likes, dependent: :destroy
validates :title, presence: true
validates :body, presence: true
# 〜省略〜
FactoryBot의 내역
spec/factories/definitions.rbFactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
지원 모듈
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rbmodule DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
· ransack이라는 gem을 사용하여 검색 기능이 구현되었습니다.
gem 'ransack'
· 투고시의 결합 테스트와 같은 테스트 파일에 검색 기능의 내용도 기술하고 있습니다.
투고시에 있어서의 테스트 코드의 기술은 이하의 URL보다 보실 수 있습니다.
버전
루비 버전 ruby-2.6.5
Rails 버전 Rails:6.0.0
rspec-rails 4.0.0
실시한 테스트
검색 화면
키워드 검색을 할 수 있고, 검색하면 투고한 타이틀이 표시된다.
정의 테이블의 열 소개
xxx_create_definitions.rbclass CreateDefinitions < ActiveRecord::Migration[6.0]
def change
create_table :definitions do |t|
t.text :title, null: false
t.text :body, null: false
t.references :user, foreign_key: true
t.timestamps
end
end
end
검색 관련 컨트롤러 내용
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
#省略
before_action :set_search
def set_search
#省略
@definition_key = Definition.ransack(params[:q])
@search_definitions = @definition_key.result(distinct: true).page(params[:page])
#省略
end
#省略
end
※view에 관한 기술의 게재는 생략하고 있습니다.
모델의 유효성 검사
app/models/definition.rbclass Definition < ApplicationRecord
belongs_to :user
has_many :answers, dependent: :destroy
has_many :reviews, dependent: :destroy
has_many :notifications, dependent: :destroy
has_many :likes, dependent: :destroy
validates :title, presence: true
validates :body, presence: true
# 〜省略〜
FactoryBot의 내역
spec/factories/definitions.rbFactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
지원 모듈
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rbmodule DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
검색 화면
키워드 검색을 할 수 있고, 검색하면 투고한 타이틀이 표시된다.
정의 테이블의 열 소개
xxx_create_definitions.rbclass CreateDefinitions < ActiveRecord::Migration[6.0]
def change
create_table :definitions do |t|
t.text :title, null: false
t.text :body, null: false
t.references :user, foreign_key: true
t.timestamps
end
end
end
검색 관련 컨트롤러 내용
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
#省略
before_action :set_search
def set_search
#省略
@definition_key = Definition.ransack(params[:q])
@search_definitions = @definition_key.result(distinct: true).page(params[:page])
#省略
end
#省略
end
※view에 관한 기술의 게재는 생략하고 있습니다.
모델의 유효성 검사
app/models/definition.rbclass Definition < ApplicationRecord
belongs_to :user
has_many :answers, dependent: :destroy
has_many :reviews, dependent: :destroy
has_many :notifications, dependent: :destroy
has_many :likes, dependent: :destroy
validates :title, presence: true
validates :body, presence: true
# 〜省略〜
FactoryBot의 내역
spec/factories/definitions.rbFactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
지원 모듈
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rbmodule DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
xxx_create_definitions.rb
class CreateDefinitions < ActiveRecord::Migration[6.0]
def change
create_table :definitions do |t|
t.text :title, null: false
t.text :body, null: false
t.references :user, foreign_key: true
t.timestamps
end
end
end
검색 관련 컨트롤러 내용
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
#省略
before_action :set_search
def set_search
#省略
@definition_key = Definition.ransack(params[:q])
@search_definitions = @definition_key.result(distinct: true).page(params[:page])
#省略
end
#省略
end
※view에 관한 기술의 게재는 생략하고 있습니다.
모델의 유효성 검사
app/models/definition.rbclass Definition < ApplicationRecord
belongs_to :user
has_many :answers, dependent: :destroy
has_many :reviews, dependent: :destroy
has_many :notifications, dependent: :destroy
has_many :likes, dependent: :destroy
validates :title, presence: true
validates :body, presence: true
# 〜省略〜
FactoryBot의 내역
spec/factories/definitions.rbFactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
지원 모듈
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rbmodule DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ApplicationController < ActionController::Base
#省略
before_action :set_search
def set_search
#省略
@definition_key = Definition.ransack(params[:q])
@search_definitions = @definition_key.result(distinct: true).page(params[:page])
#省略
end
#省略
end
app/models/definition.rb
class Definition < ApplicationRecord
belongs_to :user
has_many :answers, dependent: :destroy
has_many :reviews, dependent: :destroy
has_many :notifications, dependent: :destroy
has_many :likes, dependent: :destroy
validates :title, presence: true
validates :body, presence: true
# 〜省略〜
FactoryBot의 내역
spec/factories/definitions.rbFactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
지원 모듈
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rbmodule DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FactoryBot.define do
factory :definition do
title {Faker::Lorem.sentence}
body {Faker::Lorem.sentence}
association :user
end
end
신규 투고할 때의 기술을 모듈화하고 있습니다.
spec/support/definition_up_support.rb
module DefinitionUpSupport
def definition_up(definition_title, definition_body)
# 新規投稿ページへのリンクがあることを確認する
expect(page).to have_content('投稿')
# 投稿作成ページに移動する
visit new_definition_path
# フォームに情報を入力する
fill_in 'definition[title]', with: definition_title
fill_in 'definition[body]', with: definition_body
# 送信するとDefinitionモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
}.to change { Definition.count }.by(1)
# 投稿完了ページに遷移することを確認する
expect(current_path).to eq(root_path)
end
end
테스트 코드 내용
spec/system/definitions_spec.rb#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
보충 설명
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#投稿における結合テストの記述は省略
RSpec.describe '投稿のタイトルの検索', type: :system do
before do
@definition = FactoryBot.create(:definition)
@definition_title = "あいうえお"
@definition_body = Faker::Lorem.sentence
end
context '投稿の検索ができるとき' do
it 'ログインしたユーザーは自らが投稿した投稿の検索ができる' do
# definitionを投稿したユーザーでログインする
sign_in(@definition.user)
# 新規投稿する
definition_up(@definition_title, @definition_body)
# 投稿ページに移動する
visit root_path(anchor:"definitions")
# 検索欄に検索キーワードを入力する
fill_in 'q[title_cont]', with: 'あ'
# 検索ボタンをクリックする
find('#definition_title_search').click
# 検索結果があることを確認する
expect(page).to have_content(@definition.title)
end
end
fill_in 'q[title_cont]', with: '아'에 대해
검색 입력란의 name 속성 값을 fill_in의 요소로 사용합니다.
이번은 키워드 입력해 검색할 수 있는 테스트를 실시하고 싶기 때문에, 그 키워드가 되는 「아」(적당)를 with 이하로 지정하고 있습니다.
find('#definition_title_search').click 정보
find 인수는 검색 마크 설명의 id 값을 지정합니다.
app/views/index.html.erb
#省略
<i class="fas fa-search" id='definition_title_search'></i>
#省略
id의 값은 스스로 임의로 설정할 수 있습니다.
id를 지정할 때는 문장에 #을 붙입니다.
expect(page).to have_content(@definition.title) 정보
최종적으로 타이틀의 표시를 확인할 수 있으면 좋기 때문에, 기술의 의미로서는
'페이지에 게시물 제목이 있는지 확인'
됩니다.
이상입니다.
Reference
이 문제에 관하여(【Rails6】RSpec에 의한 검색 기능(ransack)의 결합 테스트의 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/narimiya/items/13c7a9c3fe28e72ebaaa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)