前提・実現したいこと
フリマアプリのモデル単体テストを実装中ですが、(FAILED - )として3ヶ所エラーが出ます。間違いである記述を見つけることができません。
発生している問題・エラーメッセージ
User ユーザー新規登録 新規登録できる場合 nickname、email、password、password_confirmation、first_name、last_name、first_name_kana、last_name_kana、birthdayが存在すれば登録できる 新規登録ができない時 nicknameが空では登録できない first_nameが空では登録できない last_nameが空では登録できない first_name_kanaが空では登録できない last_name_kanaが空では登録できない first_name_kanaのフリガナは全角(カタカナ)でなければ登録できない (FAILED - 1) last_name_kanaのフリガナは全角(カタカナ)でなければ登録できない (FAILED - 2) birthdayが空では登録できない emailが空では登録できない 重複したemailが存在する場合登録できない passwordが空では登録できない password_confirmationが空では登録できない passwordとpassword_confirmationが不一致では登録できない passwordが5文字以下では登録できない passwordが英数混合でないと登録できない (FAILED - 3) Failures: 1) User ユーザー新規登録 新規登録ができない時 first_name_kanaのフリガナは全角(カタカナ)でなければ登録できない Failure/Error: expect(@user.errors.full_messages).to include("fitst name kana がカタカナで入力されていない") expected ["First name kana is invalid"] to include "fitst name kana がカタカナで入力されていない" # ./spec/models/user_spec.rb:43:in `block (4 levels) in <top (required)>' 2) User ユーザー新規登録 新規登録ができない時 last_name_kanaのフリガナは全角(カタカナ)でなければ登録できない Failure/Error: expect(@user.errors.full_messages).to include("Last name kana can't be blank") expected ["Last name kana is invalid"] to include "Last name kana can't be blank" # ./spec/models/user_spec.rb:48:in `block (4 levels) in <top (required)>' 3) User ユーザー新規登録 新規登録ができない時 passwordが英数混合でないと登録できない Failure/Error: expect(@user.errors.full_messages).to include("Password No alphanumeric mixture") expected [] to include "Password No alphanumeric mixture" # ./spec/models/user_spec.rb:92:in `block (4 levels) in <top (required)>' Finished in 0.11392 seconds (files took 1.31 seconds to load) 16 examples, 3 failures Failed examples: rspec ./spec/models/user_spec.rb:40 # User ユーザー新規登録 新規登録ができない時 first_name_kanaのフリガナは全角(カタカナ)でなければ登録できない rspec ./spec/models/user_spec.rb:45 # User ユーザー新規登録 新規登録ができない時 last_name_kanaのフリガナは全角(カタカナ)でなければ登録できない rspec ./spec/models/user_spec.rb:88 # User ユーザー新規登録 新規登録ができない時 passwordが英数混合でないと登録できない
該当のソースコード
ruby on rails
spec/factories/users.rb FactoryBot.define do factory :user do nickname {Faker::Name.initials(number: 2)} first_name {'山田'} last_name {'太郎'} first_name_kana {'ヤマダ'} last_name_kana {'タロウ'} birthday {'1930-01-01'} email {Faker::Internet.free_email} password {Faker::Internet.password(min_length: 6)} password_confirmation {password} end end
spec/models/user_spec.rb require 'rails_helper' RSpec.describe User, type: :model do before do @user = FactoryBot.build(:user) end describe 'ユーザー新規登録' do context '新規登録できる場合' do it 'nickname、email、password、password_confirmation、first_name、last_name、first_name_kana、last_name_kana、birthdayが存在すれば登録できる' do expect(@user).to be_valid end end context '新規登録ができない時' do it 'nicknameが空では登録できない' do @user.nickname = '' @user.valid? expect(@user.errors.full_messages).to include("Nickname can't be blank") end it 'first_nameが空では登録できない' do @user.first_name = '' @user.valid? expect(@user.errors.full_messages).to include("First name can't be blank") end it 'last_nameが空では登録できない' do @user.last_name = '' @user.valid? expect(@user.errors.full_messages).to include("Last name can't be blank") end it 'first_name_kanaが空では登録できない' do @user.first_name_kana = '' @user.valid? expect(@user.errors.full_messages).to include("First name kana can't be blank") end it 'last_name_kanaが空では登録できない' do @user.last_name_kana = '' @user.valid? expect(@user.errors.full_messages).to include("Last name kana can't be blank") end it "first_name_kanaのフリガナは全角(カタカナ)でなければ登録できない" do @user.first_name_kana = "aiueo" @user.valid? expect(@user.errors.full_messages).to include("fitst name kana がカタカナで入力されていない") end it "last_name_kanaのフリガナは全角(カタカナ)でなければ登録できない" do @user.last_name_kana = "aiueo" @user.valid? expect(@user.errors.full_messages).to include("Last name kana がカタカナで入力されていない") end it 'birthdayが空では登録できない' do @user.birthday = '' @user.valid? expect(@user.errors.full_messages).to include("Birthday can't be blank") end it 'emailが空では登録できない' do @user.email = '' @user.valid? expect(@user.errors.full_messages).to include("Email can't be blank") end it '重複したemailが存在する場合登録できない' do @user.save another_user = FactoryBot.build(:user) another_user.email = @user.email another_user.valid? expect(another_user.errors.full_messages).to include("Email has already been taken") end it 'passwordが空では登録できない' do @user.password = '' @user.valid? expect(@user.errors.full_messages).to include("Password can't be blank") end it "password_confirmationが空では登録できない" do @user.password_confirmation = '' @user.valid? expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password") end it 'passwordとpassword_confirmationが不一致では登録できない' do @user.password_confirmation = '' @user.valid? expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password") end it 'passwordが5文字以下では登録できない' do @user.password = 'abc12' @user.password_confirmation = 'abc12' @user.valid? expect(@user.errors.full_messages).to include("Password is too short (minimum is 6 characters)") end it 'passwordが英数混合でないと登録できない' do @user.password = '12345678' @user.password_confirmation = '12345678' @user.valid? expect(@user.errors.full_messages).to include("Password No alphanumeric mixture") end end end end
試したこと
include("Last_name_kana がカタカナで入力されていない")
↓のように、includeの続き、_の記述が不要な文を消したが、エラー分が出てくる。(いくつかの場所は、この方法で解決をした。)
include("Last name kana がカタカナで入力されていない")
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
調べたこと、試したことを質問に追記していただけませんか。