rspec で pending を使ってみる
Ruby Ruby on Rails
Published: 2020-09-04

やったこと

rspec の pending を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

$ gem list | grep rspec-rails
rspec-rails (3.8.2)

調査

spec/models/task11_spec.rb

require 'rails_helper'

RSpec.describe Task, type: :model do
  it 'failedケース pendingあり' do
    pending('pending理由を何か書く')

    raise '例外発生1'
  end

  it 'successケース pendingなし' do
    expect(3 + 4).to eq 7
  end

  it 'successケース pendingあり' do
    pending('pending理由を何か書く')
  end
end

出力結果

$ bundle exec rspec spec/models/task11_spec.rb

Task
  failedケース pendingあり (PENDING: pending理由を何か書く)
  successケース pendingなし
  successケース pendingあり (FAILED - 1)

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

  1) Task failedケース pendingあり
     # pending理由を何か書く
     Failure/Error: raise '例外発生1'

     RuntimeError:
       例外発生1
     # ./spec/models/task11_spec.rb:7:in `block (2 levels) in <top (required)>'

Failures:

  1) Task successケース pendingあり FIXED
     Expected pending 'pending理由を何か書く' to fail. No error was raised.
     # ./spec/models/task11_spec.rb:14

Finished in 0.00317 seconds (files took 1.58 seconds to load)
3 examples, 1 failure, 1 pending

Failed examples:

rspec ./spec/models/task11_spec.rb:14 # Task successケース pendingあり

pending メソッドを使った場合、後続の処理でエラーが発生しないと

そのケースは失敗となります。(エラーが発生するのが正しいため)