何が違うか知らなかった時に調べたメモ。ちなみに Rspec 3 の話。
簡単に言うと以下のとおり。外的な要因で一時的に落ちているけど、いずれ通るようになる example は pending にすれば良いと思われる。(参考資料)
- pending: example が失敗したらテストは成功になる
- skip: example は実行されない
pending は何らかの事情で example が失敗する原因を修正できない場合に使えば良い。パッチがマージされるまで example が失敗する場合など。そのような時に pending を使っておけば、example が失敗する原因が修正されたときに(pending な example が成功することで)テストが失敗するようになるので、もう pending にしておく必要がないと気づくことができる。あるいは原因不明だけど example が失敗している場合も pending にしておけば、成功するようになった時に気づけるので良さそう。
一方 skip は example が実行されない。試行錯誤中に落ちる example を skip しておくのに良さそう。ただ、いずれ修正されるのなら pending が良いと思われる。もう通る見込みの無い古い example なら削除すればよいし。
ちなみに、skip するには it
を xit
にするだけで良い。便利。
RSpec.describe "an example" do
xit "is skipped using xit" do
end
xspecify "is skipped using xspecify" do
end
xexample "is skipped using xexample" do
end
end