0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

単体テストコードRspecでの.validか.valid?か

Posted at

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?
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?