validをふと「?」マークをつけるつけないで気にせずコーディングしていると
落とし穴がありました。
ターミナル上で赤くエラーメッセージが出たので修正にかかりました。
5: @user = FactoryBot.build(:user)
6: end
7:
8: it 'nameとemail、passwordとpassword_confirmationが存在すれば登録できること' do
9:
=> 10: binding.pry
11: expect(@user).to be_valid ?
12: end
13:
14: it 'nameが空では登録できないこと' do
[1] pry(#<RSpec::ExampleGroups::User::Create>)> exit
nameとemail、passwordとpassword_confirmationが存在すれば登録できること (FAILED - 1)
Failures:
1) User#create nameとemail、passwordとpassword_confirmationが存在すれば登録できること
Failure/Error: expect(@user).to be_valid?
expected #<User id: nil, name: "Spinka", email: "denyse.franecki@yahoo.com", created_at: nil, updated_at: nil> to respond to `valid??`
# ./spec/models/user_spec.rb:11:in `block (3 levels) in <top (required)>'
terminal上で (FAILED - 1)と示され
さらにエラーはここだよ Failure/Error: expect(@user).to be_valid?と示されました。
さらに
・user id:なし
・(登録用)name:Spinka(Fakerにて作成)
・(登録用)email:denyse.franecki@yahoo.com(Fakerにて作成)
・登録日時:なし
・更新:なし
以上をデータベースに登録しようとし(expect)てその期待の答え(response)が valid?ってなにに部分が以下
expected #<User id: nil, name: "Spinka", email: "denyse.franecki@yahoo.com", created_at: nil, updated_at: nil> to respond to `valid??`
Rspecの記述に問題がありました。違いは1点だけ。
validの後の?の有無だけです。
【誤】
it 'nameの値が存在すれば登録できること' do
expect(@room).to be_valid
end
【正】
it 'nameの値が存在すれば登録できること' do
expect(@room).to be_valid
end
まとめ
正常系はvalidに?をつけない。
異常系はvalidに?をつける。
を学びました。
正常系 (〜できる・ある) | 異常系(〜ない) |
---|---|
to be_valid | to be_valid? |
valid | valid? |