0

Carrierwave がドキュメントを mongoid オブジェクトにアップロードしたことを検証する方法がわかりません。

私はドキュメントクラスを持っています

class Content::Document < Content

  mount_uploader :attachment, DocumentUploader   

  field :attachable_id
  field :attachable_type
end

とアップローダ:

require 'carrierwave/orm/mongoid'
class DocumentUploader < CarrierWave::Uploader::Base

  storage = :filesystem
  include CarrierWave::RMagick

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end          

  def extension_white_list
    %w(doc docx xls xlsx ppt pptx pdf )
  end

アップロードが存在すること、およびそれがホワイト リストと一致することを標準の検証エラーで検証したい

これはRails 2.3.8にあります

4

2 に答える 2

2

Carrierwaveには広範なテストがあることは事実ですが、次のような方法で有効性をテストできます。

it "is valid with valid attributes" do
    file_bytes = File.open("spec/binary/avatar.png")
    valid_attrs = {:name => "foo", :description => "bar", :avatar => file_bytes}
    user = User.new(valid_attrs)
    user.should be_valid
  end

お役に立てば幸いです。

于 2011-04-05T02:52:37.667 に答える
1

一般に、この動作はキャリアウェーブの仕様自体で既にテストされているため、これを行う必要はありません。

Carrierwave テスト ヘルパーを使用して、アップローダを分離してテストできます。たとえば、次のような仕様を書くだけです

attachment_uploader.extension_white_list.should =~ %w(doc docx xls xlsx ppt pptx pdf)

ただし、テストを主張する場合は、FakeFSを使用してファイルシステムをスタブ化してから確認することをお勧めします

File.exists? document.attachment.current_path

添付ファイルが作成されているかどうか。

于 2010-11-08T12:33:52.027 に答える