RSpecで特定のテストだけを実行したいときの設定
はじめに
RSpecで特定のテストだけを実行したいときについて
$ rspec spec/system/task_spec.rb:10
上記のようにファイル名とテストしたい行を指定すれば、特定のテストだけを実行できますが、
次の設定をすることでもっと簡単に呼び出せます。
設定方法
RSpec.configure do |config| config.filter_run_when_matching :focus # ← ここ end
デフォルトでは上記の行がコメントアウトされているので、それを外すだけで設定できます。
だいたい50行目あたりに記述があります。
特定のテストだけを実行する
上記の設定をしたら、テストファイル内の'describe', や 'it'などの前に'f'をつけることで、特定のテストだけを実行できます。
RSpec.describe 'Task', type: :system do describe 'Task新規作成' do context '正常系' do fit 'Taskが新規作成されること' do # ← 実行される end end end describe 'Task詳細' do context '正常系' do it 'Taskが表示されること' do # ← 実行されない end end end end
また下記のように「focus」を使うやり方もあります。
RSpec.describe 'Task', type: :system do describe 'Task新規作成' do context '正常系' do it 'Taskが新規作成されること' do # ← 実行されない end end end describe 'Task詳細' do context '正常系' do it 'Taskが表示されること', focus: true do # ← 実行される end end end describe 'Task一覧' do context '正常系' do it '一覧ページにアクセスした場合、Taskが表示されること', :focus do # ← 実行される end end end end
最後に
これで'f'をつけるだけで、特定のテストだけを実行できるようになりました。
これなら複数のテストを実行したいときにも便利です。
また、自分はよくやってしまうのですが、'f'を消し忘れてしまうことがあるので気をつけましょう!