テストコードでエラーメッセージを確認する方法

 テストコードでエラーメッセージを確認する方法を記録しておきます。やることは簡単です。まずテストコード内の「valid?」の後ろに「binding.pry」を記述します。

 

spec/models/user_spec.rb

it 'emailが空では登録できない' do
user = User.new(nickname: 'test', email: '', password: '000000',
password_confirmation: '000000')
user.valid?
binding.pry
end

 

 そしてターミナルで「user.errors.full_messages」といった記述をすれば、「Email can't be blank」といったエラー文が表示されます。

[1] pry(#<RSpec::ExampleGroups::User::Nested>)> user.errors
=> #<ActiveModel::Errors:0x00007faf069c1140
@base=
#<User id: nil, email: "", created_at: nil, updated_at: nil, nickname: "test">,
@details={:email=>[{:error=>:blank}]},
@messages={:email=>["can't be blank"]}>
[2] pry(#<RSpec::ExampleGroups::User::Nested>)> user.errors.full_messages
=> ["Email can't be blank"]

 

 ちなみにテストコードは下記のようなコマンドで実行します。

% bundle exec rspec spec/models/user_spec.rb

 この時の「bundle exec」とは、Gem同士の依存関係を整理するものです。

 

 

 以上です。