やったこと
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 メソッドを使った場合、後続の処理でエラーが発生しないと
そのケースは失敗となります。(エラーが発生するのが正しいため)