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
のように指定すれば件数を変更できる。