前提・実現したいこと
Rspecでモデルのバリデーションについてのテストコードを書いています.
発生している問題・エラーメッセージ
その際、このエラーメッセージが出てきており、解決できず困っています。
モデルItemにはbelong_toとは打ち込んでいません。
なぜ、belong_toが未定義のメソッドであるとエラーが出ているかわかりません。
An error occurred while loading ./spec/models/item_spec.rb. Failure/Error: belong_to :category NoMethodError: undefined method `belong_to' for #<Class:0x00007fb9cc684fd8> # ./app/models/item.rb:2:in `<class:Item>' # ./app/models/item.rb:1:in `<main>' # ./spec/models/item_spec.rb:3:in `<main>' Finished in 0.00003 seconds (files took 1.43 seconds to load) 0 examples, 0 failures, 1 error occurred outside of examples
該当のソースコード
モデル Item.rb
Ruby
1class Item < ApplicationRecord 2 belongs_to :category 3end
モデル Category.rb
Ruby
1class Category < ApplicationRecord 2 has_many :items 3end
Ruby
1require 'rails_helper' 2 3RSpec.describe Item, type: :model do 4 describe '#create' do 5 before do 6 7 @item = FactoryBot.build(:item) 8 end 9 10 context '登録できる場合' do 11 it '全ての項目が存在していれば登録できること' do 12 expect(@item).to be_valid 13 end 14 end 15 16 context '登録できない場合' do 17 it 'bodyが空だと登録できない' do 18 @item.body = nil 19 @item.valid? 20 expect(@item.errors[:body]).to include("can't be blank") 21 end 22 23 it 'category_idが空だと登録できない' do 24 @item.category_id = nil 25 @item.valid? 26 expect(@item.errors[:category_id]).to include("can't be blank") 27 end 28 end 29 end 30end 31
試したこと
rspec-railsのバージョンを5.0.1から4.0.2へダウングレードしましたが、事象変わらずです。
補足情報(FW/ツールのバージョンなど)
Rails 6.0.4
Ruby 2.6.5
rspec-rails (4.0.2)
あなたの回答
tips
プレビュー