コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RSpecでテストをpendingしたい場合はxから始まるメソッドにリネームするといい

こんな機能があるんだという気持ちになったのでメモ

環境

rspec (3.7.0)

使いかた

example_spec.rb として以下のスペックを書いてみる

実行すれば以下の結果

require "rspec"

describe "DummyTest" do
  describe "Target" do
    context "Case1" do
      it "SuccessA" do
        expect(true).to be true
      end

      it "SuccessB" do
        expect(true).to be true
      end
    end

    context "Case2" do
      it "FailedA" do
        expect(false).to be false
      end

      it "FailedB" do
        expect(false).to be false
      end
    end
  end
end
$ bundle exec rspec example_spec.rb 
....

Finished in 0.0161 seconds (files took 0.16465 seconds to load)
4 examples, 0 failures

このときCase2のテストをスキップしたい場合は以下のように context から xcontext に書き換えるとスキップする。

xcontext "Case2" do

書き換え後の結果は以下

$ bundle exec rspec example_spec.rb 
..**

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) DummyTest Target Case2 FailedA
     # Temporarily skipped with xcontext
     # ./example_spec.rb:16

  2) DummyTest Target Case2 FailedB
     # Temporarily skipped with xcontext
     # ./example_spec.rb:20


Finished in 0.00591 seconds (files took 0.09567 seconds to load)
4 examples, 0 failures, 2 pending

この x をつけたメソッド、 xdescribexit も用意されているので、spec書いていて特定のものだけ抜き出しでみたいなとかそういう時に便利。

参考リンク