前提・実現したいこと
factory_botを使用したRSpecテストの実装
nameが重複している時、エラーが表示されていることを期待するテストを実装したいですが、以下のエラーが発生します。
エラーメッセージ
Failure/Error: expect(user.errors[:name]).to include("はすでに存在しています") expected #<ActiveModel::DeprecationHandlingMessageArray(["はすでに存在します"])> to include "はすでに存在しています" # ./spec/models/user_spec.rb:36:in `block (3 levels) in <top (required)>'
該当のソースコード
[models/user.rb] class User < ApplicationRecord has_secure_password VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i validates :name, presence: true,uniqueness: true validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness:true validates :password, presence: true, length: {minimum: 6}, on: :creat mount_uploader :image_icon, ImageUploader end
[spec/factories/users.rb] FactoryBot.define do factory :user do name {"username"} sequence(:email){|n|"test#{n}@example.com"} password {"password"} end end
[spec/user_spec.rb] it "nameが重複している時、エラーが表示されていること" do FactoryBot.create(:user, name: "username") user = FactoryBot.build(:user, name: "username") user.valid? expect(user.errors[:name]).to include("はすでに存在しています") end
試したこと
ActiveModel::DeprecationHandlingMessageArrayで検索しましたが、うまく解決方法を見つけることができませんでした。
また、非推奨の警告なのかな?と思いましたが、具体的な解決方法がわかりませんでした。
投げやりな質問になってしまい申し訳ありませんがご教授のほどよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
RSpec 3.10
- rspec-core 3.10.1
- rspec-expectations 3.10.1
- rspec-mocks 3.10.2
- rspec-rails 5.0.1
- rspec-support 3.10.2
Rails 6.1.3.1
ruby '2.6.3'
あなたの回答
tips
プレビュー