LoginSignup
0
0

More than 3 years have passed since last update.

【Rspecエラー】expected #<ActiveModel::DeprecationHandlingMessageArray([])> to include ~ の解決

Posted at

Rspecでテストコード記入中に発生したエラーです。

spec/models/quiz_spec.rbに以下の様にテストを書いていました。

require 'rails_helper'
RSpec.describe Quiz, type: :model do
  include ActionDispatch::TestProcess::FixtureFile


  let(:quiz) { create(:quiz) }

  ~

  describe '投稿画像の拡張子の検証' do 
    it '正しい拡張子の画像ファイルが問題画像として有効であること' do

  ~

    it '不正な拡張子の画像ファイルが正解画像として無効であること' do
        quiz.answer_image = fixture_file_upload('/e5cb899367efb53d53e5047185f273d8.gif')
        expect(quiz.errors[:answer_image]).to include('の拡張子が間違っています')
    end

  end

end

これでRspecを走らせると以下の様なエラーが発生しました。

Failures:

  1) Quiz 投稿画像の拡張子の検証 不正な拡張子の画像ファイルが正解画像として無効であること
     Failure/Error: expect(quiz.errors[:answer_image]).to include('の拡張子が間違っています')
       expected #<ActiveModel::DeprecationHandlingMessageArray([])> to include "の拡張子が間違っています"

~

エラー文を読んでもよくわかりませんでしたが、対象テストを以下の様に書き換えると通りました。

    it '不正な拡張子の画像ファイルが正解画像として無効であること' do
      quiz.answer_image = fixture_file_upload('/e5cb899367efb53d53e5047185f273d8.gif')
      quiz.valid?
      expect(quiz.errors[:answer_image]).to include('の拡張子が間違っています')
    end

quiz.valid?を追加しています。一度バリデーションをかけないとerrorsに何も値が代入されません。
今回のエラーはバリデーションにかけていなかったためにerrorsに何も値が代入されていなかったために発生していた様です。

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