2

ペーパークリップを使用する画像アップローダーの単体テストを作成しています。でこぼこしていて、ペーパークリップ::ジオメトリクラスで立ち往生するまで、ハードルを考えてゆっくりと動いていました。

これが私のコードです

 require 'test_helper'
 require File.join(File.dirname(__FILE__),"../../config/initializers","paperclip")    

 class PhotoTest < ActiveSupport::TestCase
 #include ActionController::TestProcess

 should_belong_to(:product)
 should_have_attached_file :data

 setup do
   #I had to do this way because the include right below the class line was not working 
   image = Photo.create(:data => ActionController::TestUploadedFile.new(ActionController::TestCase.fixture_path + "base-production-pack.png",'image/png')) 
   @geo = Paperclip::Geometry.from_file(image)
 end
end

ペーパークリップ::ジオメトリは私にエラーを与えています:

test: Photo should have a paperclip attachment named #data. (PhotoTest):
Paperclip::NotIdentifiedByImageMagickError: #<Photo:0x1054aa6b8> is not recognized by the 'identify' command.
paperclip (2.3.6) lib/paperclip/geometry.rb:24:in `from_file'
/test/unit/photo_test.rb:13

ローカルマシンのIDを指すイニシャライザファイル「paperclip.rb」があります

前もって感謝します

4

1 に答える 1

2

Paperclip::Geometry.from_fileパスが必要なので、次のようにする必要があります。

Paperclip::Geometry.from_file(image.data.path)

補足: テストしているのは良いことですが、ペーパークリップのテスト スイートがそれをカバーしているため、ペーパークリップのジオメトリ メソッドをテストする意味はほとんどありません。テストではコードで期待される動作をカバーする必要があります (たとえば、サムネイルが期待どおりにサイズ変更されていることを確認するなど)。

于 2011-02-19T08:05:18.437 に答える