はじめに
あるテストケースだけを検証したい場合、いちいち全体のテストが走るのを待っているのは時間がかかって面倒です。
特定のテストだけを検証したい場合に便利な方法があります。
spec_helper.rbを編集する
52行目辺り=begin
という記述があるので探してください。
これをconfig.filter_run_when_matching :focus
の下辺りまでズラしてコメントアウトを外しましょう。
RSpec.configure do |config|
------------一部省略-----------------
=begin
# This allows you to limit a spec run to individual examples or groups
# you care about by tagging them with `:focus` metadata. When nothing
# is tagged with `:focus`, all examples get run. RSpec also provides
# aliases for `it`, `describe`, and `context` that include `:focus`
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
config.filter_run_when_matching :focus
# Allows RSpec to persist some state between runs in order to support
-------------一部省略---------------------------
Kernel.srand config.seed
=end
end
下記のように=begin
の位置をずらします。
RSpec.configure do |config|
------------一部省略-----------------
# This allows you to limit a spec run to individual examples or groups
# you care about by tagging them with `:focus` metadata. When nothing
# is tagged with `:focus`, all examples get run. RSpec also provides
# aliases for `it`, `describe`, and `context` that include `:focus`
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
config.filter_run_when_matching :focus
=begin
# Allows RSpec to persist some state between runs in order to support
-------------一部省略---------------------------
Kernel.srand config.seed
=end
end
使い方
describe、content、itなどのテストブロックの頭にfを付けるだけで、そのテストブロックのみが実行されるようになります。
RSpec.describe 'Users', type: :system do
describe 'ログイン前' do
describe 'ユーザー新規登録' do
context 'フォームの入力値が正常' do
it 'ユーザーの新規作成が成功する' do
# テストは省略
end
end
context 'メールアドレスが未入力' do
# 実行したいテストブロックに f をつける。
fit 'ユーザーの新規作成が失敗する' do
# テストは省略
end
end
context '登録済のメールアドレスを使用' do
it 'ユーザーの新規作成が失敗する' do
# テストは省略
end
end
end
describe 'マイページ' do
context 'ログインしていない状態' do
it 'マイページへのアクセスが失敗する' do
# テストは省略
end
end
end
> bundle exec rspec spec/system/users_spec.rb ?03_system_spec
Run options: include {:focus=>true}
Users
ログイン前
ユーザー新規登録
メールアドレスが未入力
2021-10-27 13:57:18 WARN Selenium [DEPRECATION] [:browser_options] :options as a parameter for driver initialization is deprecated. Use :capabilities with an Array of value capabilities/options if necessary instead.
ユーザーの新規登録が失敗する
Finished in 3.96 seconds (files took 1.8 seconds to load)
1 example, 0 failures
他にも書き方があるので抑えておきましょう。
focus 'ユーザーの新規作成が失敗する' do
# テストは省略
end
fit 'ユーザーの新規作成が失敗する', focus: true do
# テストは省略
end
fit 'ユーザーの新規作成が失敗する' , :focus do
# テストは省略
end
コメント