RSpec::Expectations::ExpectationNotMetError: 

# はじめに

rspecでのテスト中に`RSpec::Expectations::ExpectationNotMetError: `のエラーが
発生しました。
めちゃくちゃ凡ミスでした。二度としないように備忘録に残しておきます！！！

※`Rspec`、`FactoryBot`は導入済みの状態で始まります。

# エラー紹介
~~~
bundle exec rspec spec/models/item_spec.rb
~~~
実行時に

~~~ruby
RSpec::Expectations::ExpectationNotMetError: expected #<Item id: nil, title: "商品名", price: 50000, concept: "説明文", category_id: 1, condition_id: 1, postage_payer_id: 1, ship_area_id: 1, ship_date_id: 1, user_id: nil, created_at: nil, updated_at: nil> to be valid, but got errors: Category can't be blank, Condition can't be blank, Postage payer can't be blank, Ship area can't be blank, Ship date can't be blank
~~~

と上記のエラー文が発生しました。


パラメーターで情報を送ることはできているが
~~~ruby
but got errors:
~~~
以降の文を確認すると
~~~ruby
Category can't be blank, Condition can't be blank, Postage payer can't be blank, Ship area can't be blank, Ship date can't be blank
~~~

とバリデーションでデータが弾き出されているとエラーが表示されている・・・


↓以下実装コード

~~~ruby models/item.rb
class Item < ApplicationRecord
  validates :title,            presence: true
  validates :price,            presence: true, numericality: { greater_than_or_equal_to: 300, less_than_or_equal_to: 9999999, message: "Out of setting range" }
  validates :price,                            numericality: { only_integer: true, message: "Half-width number."}
  validates :concept,          presence: true
  validates :image,            presence: true
  validates :category_id,      numericality: { other_than: 1 , message: "can't be blank" } 
  validates :condition_id,     numericality: { other_than: 1 , message: "can't be blank" }
  validates :postage_payer_id, numericality: { other_than: 1 , message: "can't be blank" }
  validates :ship_area_id,     numericality: { other_than: 1 , message: "can't be blank" }
  validates :ship_date_id,     numericality: { other_than: 1 , message: "can't be blank" }

  belongs_to :user
  has_one_attached :image

  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to :category
  belongs_to :condition
  belongs_to :postagepayer, optional: true
  belongs_to :shiparea,     optional: true
  belongs_to :shipdate,     optional: true
end
~~~

~~~ruby factories/items.rb
FactoryBot.define do
  factory :item do
    title             { '商品名' }
    price             { '50000' }
    concept           { '説明文' }
    category_id       { '1' }
    condition_id      { '1' }
    postage_payer_id  { '1' }
    ship_area_id      { '1' }
    ship_date_id      { '1' }

    association :user

    after(:build) do |item|
      item.image.attach(io: File.open('public/images/test_image.png'), filename: 'test_image.png')
    end
  end
end
~~~

# 解説

~~~ruby models/item.rb
  validates :category_id,      numericality: { other_than: 1 , message: "can't be blank" } 
  validates :condition_id,     numericality: { other_than: 1 , message: "can't be blank" }
  validates :postage_payer_id, numericality: { other_than: 1 , message: "can't be blank" }
  validates :ship_area_id,     numericality: { other_than: 1 , message: "can't be blank" }
  validates :ship_date_id,     numericality: { other_than: 1 , message: "can't be blank" }
~~~
で　***id1*** 意外で登録するように設定しているのに

`FactoryBot`作成時に
仮の数字を ***1*** で入力しているという初歩中の初歩のミスを犯してました・・・泣

~~~ruby factories/items.rb
FactoryBot.define do
  factory :item do
    title             { '商品名' }
    price             { '50000' }
    concept           { '説明文' }
    category_id       { '2' }
    condition_id      { '2' }
    postage_payer_id  { '2' }
    ship_area_id      { '2' }
    ship_date_id      { '2' }

    association :user

    after(:build) do |item|
      item.image.attach(io: File.open('public/images/test_image.png'), filename: 'test_image.png')
    end
  end
end
~~~

以上　1→2に　修正することで無事解決しました。
解決に2時間ほどかかってしまいました。。。