RSpecコマンドメモ
-P、--pattern
globを指定して実行するspecファイルを指定する。デフォルトはspec/**/*_spec.rb。実行から除外する--exclude-patternオプションもある。
-e、--example
bin/rspec -e テキストの形で指定し、テキストが含まれるdescribe、context、itだけが実行される。
以下のようなspecがあるとする。
RSpec.describe User, type: :model do
describe '#name' do
it 'is string' do
# ...
end
context '#foo' do
it 'is string' do
# ...
end
end
end
end
このとき、context '#foo'の中のit 'is string'を実行したい場合はbin/rspec -e 'User#foo is string'という形で指定する。describeの引数がクラスでその直下のdescribeが#で始まっている場合はスペースなしで指定するが、それ以外の場合はスペースで区切る必要がある。
複数の-eオプションを指定した場合はor検索になる。
-E、--example-matches
正規表現の使える--exampleオプション。
-t、--tag
タグを指定して実行するspecを絞り込む。describe、context、itは第二引数にタグを指定することができる。
RSpec.describe User, type: :model do
describe '#name' do
it 'is string', :slow do
# ...
end
end
end
上記のspecでModelのspecを実行したいが遅いspecは除外したい場合はbin/rspec -t type:model -t ~slowのように指定することができる。
ファイル名:行数
ファイルを指定してspecを実行する際、行数を指定することでその行数のspecを実行することができる。
例えばbin/rspec spec/models/user_spec.rb:20とすると20行目を含むdescribe、context、itのspecが実行される。
-f、--format
結果の出力フォーマットを指定する。デフォルトはprogress。-o(--out)オプションを指定すると結果をファイルに保存できる。
bin/rspec -f progress -f doc -o rspec-resultを実行するとprogressフォーマットで標準出力され、docフォーマットでrspec-resultファイルに出力される。
失敗したspecだけ表示するfailuresフォーマットもある。
--order
specの実行順序を指定する。デフォルトはdefinedで定義された順に実行される。randを指定すると実行順序がランダムになる。
bin/rspec --order rand:123のようにrand:シード値とすることでシード値を指定することができるが、bin/rspec --order randで毎回ランダムなシード値が指定されるので通常は指定する必要はない。実行順序バグを見つけた時に使うぐらい。なお、シート値を指定するだけならbin/rspec --seed 123としても同じ。
--dry-run
実行せずにspecの一覧を表示したい場合はbin/rspec --dry-run -f docとすればよい。
--fail-fast
specが失敗した時点で実行を止めるオプション。bin/rspec --fail-fast=3のように何回失敗したら実行を止めるか指定することができる。
--bisect
順序バグがある場合に順序バグが制限する最小セットを探すのに使うオプション。
bin/rspec --order randを実行したときにRandomized with seed xxxxのようにxxxxの部分にシード値が表示される。特定のシード値でのみspecが失敗するなら順序バグが存在するということになる。
その場合、そのシード値でbin/rspec --seed シード値 --binsectを実行するとspecを繰り返し実行し、順序バグが再現する最小セットのコマンドが得られる。
--profile
bin/rspec --profileのように--profileオプションを指定するとスローテスト上位10件が表示される。--profile 20のように指定すれば件数を変更できる。