2013-09-04 3 views
2

capybara 기능 사양을 실행하면 factory_girl으로 채워지는 느린 공장 공지 사항을 많이 볼 수 있습니다. 이 느린 공장 물건은 특징 사양을 무겁게 느리게한다, 나는 생각한다, 심지어 특징 사양은 본래 느린 사양이다. 그 다음 나는 약간의 조사를했고, 느린 공장의 대부분이 paperclip에 의한 ㄴ다는 것을 알았다. paperclip이 시험을 가속화하기위한 테스트 모드 같은 방법이 있다면Acceptance Tests에서 Paperclip의 이미지 처리 속도 향상

FactoryGirl.define do 
    factory :asset do 
    image Rails.root.join('spec/fixtures/sample.jpg').open 
    end 
end 

그래서 궁금 : 우리는 여기에 클립을 사용하여 모델을했다. 여기에 간단한 해결책이 있습니다. 원본 파일을 실제로 자르지 않고 복사하십시오.

답변

3

내가 이것을 달성하기 위해 밖으로 방법을 찾았을,이 코드를 참조하십시오

FactoryGirl.define do 
    factory :asset do 
    image_file_name { 'sample.jpg' } 
    image_content_type 'image/jpeg' 
    image_file_size 256 

    after(:create) do |asset| 
     image_file = Rails.root.join("spec/fixtures/#{asset.image_file_name}") 

     # cp test image to direcotries 
     [:original, :medium, :thumb].each do |size| 
     dest_path = asset.image.path(size) 
     `mkdir -p #{File.dirname(dest_path)}` 
     `cp #{image_file} #{dest_path}` 
     end 
    end 
    end 
end 

수동으로 cp factory_girl의 실제 자산 이미지 경로에 대한 테스트 이미지. 그것은 매력처럼 작동합니다.

+0

그냥 다른 사람 참고. 나는'after (: build)'콜백 만 사용할 수 있었지만 id에 접근 할 수 없었다. 'sequence (: id) {| n | n}'와 같이 id에 시퀀스를 추가하여 이것을 수정했습니다. – complistic

7

심지어 이미지 처리를 시도하지 클립의 원인이됩니다 공장에서 클립 이미지 필드를 설정할 수 있습니다

factory :asset do   
    # Set the image fields manually to avoid uploading/processing the image 
    image_file_name { 'test.jpg' } 
    image_content_type { 'image/jpeg' } 
    image_file_size { 256 } 
end 
+0

도움 주셔서 감사합니다. 괜찮을 지 모르지만 업로드 경로에 'public/system/assets/images/000/000/001/medium/test.jpg'와 같은 실제 이미지가 있어야합니다. 이미지를 요청할 때 404가 있으면 기능 사양이 실패합니다. – ryancheung

+0

image_file_name을 Rails.root.join ('spec/fixtures/sample.jpg')으로 지정할 수 있습니다. – steakchaser

+0

원본, 큰 사진, 중간 크기 및 작은 사진이 모두 디렉토리에 있어야합니다. 나는이 접근법이 이러한 파일을 생성하지 않을 것이라고 생각한다. – ryancheung