2017-02-04 4 views
0

팩토리 걸 (Factory Girl) 및 RSPEC을 사용하여 ActiveRecord 연결을 통해 제공되는 메서드는 어떻게 구현합니까? 코드가 원하는대로 작동하지만 기능보기 테스트를 만들 수 없습니다.관련 메서드를 사용한 RSPEC 뷰 테스트

시나리오는 '사진'이 많은 '사용자'입니다. '사진'이라는 '사진'과 연결된 Carrierwave 업 로더가 있습니다.

컨트롤러 :

@users = User.includes(:pics).order("pics.pic_order ASC") 

보기 :

<% @users.each do |user| %> 
    <%= image_tag(user.pics.first.photo.url(:aspect15small)) %> 
<% end %> 

사용자 공장 :

factory :user do 
    height 60 
    weight 150 
end 

그림 공장 :

factory :pic do 
    photo { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec/photos/user1.jpg'))} 
    user 
    pic_order {generate(:pic_order)} 
end 

보기 제원 : 정의되지 않은 메서드 '사진'무기 호에 대한 : NilClass

pics = build_stubbed_list(:pic, 10) 
users = build_stubbed_list(:user, 10) 
assign(:users, users) 
render 

ActionView :: 템플릿 : 오류의 사양 결과를 실행합니다. 분명히, 사용자는 그것과 관련된 사진을 가지고 있지 않습니다.

스펙에서 연결을 만드는 수많은 방법을 시도했지만 아직 성공하지 못했습니다.

답변

0

관련 개체를 공장에서 직접 만들 수 있습니다. 이것을 사용해보십시오

factory :user do 
    height 60 
    weight 150 

    after(:build) do |user| 
    if user.pics.empty? 
    user.pics.push build(:pic), build(:pic) 
    end 
    end 
end 
+0

고마워요. 이것은 올바른 방향으로 나를 가리켰다. –