Ruby on RailsのテスティングフレームワークであるRspecを利用する際の行数を指定して実行する方法があります。
bundle exec rspec app/spec/test/test.rb:5
上記のように、最後に :10
などのオプションを付与することで、その行のテストを実行することができます。
Rspecの行数指定のメリット
行数指定をするメリットとしては、テスト実行が早いこと
が一番のメリットかと思います。
必要な部分のテストだけを行うため、結果が返ってくるのも早いですし、テストが通ったのかどうかという確認も早いです。
E2Eテストである、feature_spec
やsystem_spec
は実行がかなり重く、1ファイル単位の実行を繰り返しているとあっという間に時間が経ってしまいます。
このような重いテストを繰り返す場合は行数指定で必要最低限のテストだけ実行することが非常に効果的です。
describeやcontext単位で指定してみよう
例えば、下記のテストがあったとします。
テスト全体を実行したい場合
bundle exec rspec app/spec/test/test.rb:1
bundle exec rspec app/spec/test/test.rb
上記のコマンドですべて実行されます。
discribe "#メソッドのテスト" do context "when 成功時" do it { expect().to eq "ひとつめのテスト") } it { expect().to eq "ふたつめのテスト") } end context "when 失敗時" do it { expect().to eq "ひとつめのテスト") } it { expect().to eq "ふたつめのテスト") } end end
context単位で実行したい場合
contextの行数部分で指定しましょう。
例えば、 "when 成功時" で囲まれたテストの実行はこんなコマンドです。
bundle exec rspec app/spec/test/test.rb:2
これで実行してテストされるのは、 it節の二つです。 以下の部分がテストとして実行されます。
it { expect().to eq "ひとつめのテスト") } it { expect().to eq "ふたつめのテスト") }
it節単位で実行したい場合
bundle exec rspec app/spec/test/test.rb:3
や
bundle exec rspec app/spec/test/test.rb:4
といった具体の指定でOKです。
Rspecの行数指定のテストまとめ
行数指定をすることで実行速度の向上、生産性の向上が狙えます!
ぜひ、利用してみてください。