RSpecコマンドメモ

-P--pattern

globを指定して実行するspecファイルを指定する。デフォルトはspec/**/*_spec.rb。実行から除外する--exclude-patternオプションもある。

-e--example

bin/rspec -e テキストの形で指定し、テキストが含まれるdescribecontextitだけが実行される。

以下のような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を絞り込む。describecontextitは第二引数にタグを指定することができる。

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