【RSpec】모델 단위 테스트 실행시의 「MissingAttributeError」를 해결한다

소개



RSpec을 이용한 테스트시의 에러로 넘어졌으므로, 비망록으로서 정리합니다.

환경



Ruby 2.6.5
Rails 6.0.3.6

상황



Twitter와 같은 게시물 앱을 만드는 중입니다. FactoryBot을 사용하여 게시물에 대한 Post 모델의 단위 테스트를 수행한 결과 "MissingAttributeError"가 나왔습니다. 아래에 자세히 설명합니다.

FactoryBot



posts.rb
FactoryBot.define do
  factory :post do
    # 省略
    association :user 
   # 省略
  end
end

association :user는 users.rb의 FactoryBot과 연관이 있음을 의미합니다. 즉, Post 인스턴스가 생성되는 동시에 관련 User 인스턴스도 생성됩니다.

example을 내보내고 시험에 테스트를 실행하면 오류가 발생합니다.


ActiveModel::MissingAttributeError:
       can't write unknown attribute `user_id`

"user_id라는 속성은 모르겠어"라는 내용입니다.

posts 테이블 확인



테이블의 열을 확인할 때 user_id 열이 없었습니다.


마이그레이션 파일 확인



t.references :user의 설명을 잊어 버렸고 테이블을 만들 때 user_id 열을 만들 수 없다는 것을 알았습니다.

user_id 열을 추가하고 오류 해결



칼럼의 추가 방법은, 다른 분의 알기 쉬운 기사가 ​​있으므로, 참고해 주세요.
나는 이쪽을 참고로 했습니다.
h tps:// 퀵했다. 작은 m / 쿠라 ___D / MS / 그림 3694f7 아 870 아 1 C4738 그림



요약



post는 user에 연결되어 있기 때문에 FactoryBot에서 asociation :user라고 기술하고 연결하는 user 데이터를 동시 생성하려고했습니다.
하지만 post 테이블에 user_id 열이 없어서 연결할 수 없어 오류가 발생했습니다.

마지막으로



처음의 투고로 알기 어려운 부분이 많이 있을까 생각합니다만, 누군가의 참고가 되면 다행입니다.

좋은 웹페이지 즐겨찾기