3

モデル:

class Attachment < ActiveRecord::Base

  belongs_to :narrative

  attr_accessible :description, :user_id, :narrative_id

  has_attached_file :file

  validates_presence_of :user_id
  validates_presence_of :narrative_id
  validates_attachment :file, :presence => true,
                       :size => {:less_than => 20.megabytes}
end

動作しないテスト:

describe Attachment do
  it { should validate_presence_of :file }
  it { should validate_size_of :file } # validate_size_of does not exist
end

これをテストするためだけに、20 MB のファイルをリポジトリにダンプすることは避けたいと思います。上記で試したのと同様の方法で実際に機能する方法はありますか?

4

1 に答える 1

8

私がこれを行った最善の方法は、組み込みのshoulda マッチャーを Paperclipに使用することです。そのリンクのドキュメントは非常に優れていますが、ドキュメントでできることの概要を次に示します。

spec_helper.rb では、マッチャーを要求する必要があります。

require "paperclip/matchers"

そしてモジュールを含めます:

Spec::Runner.configure do |config|
  config.include Paperclip::Shoulda::Matchers
end

添付ファイルのサイズを検証する例:

describe User do
  it { should validate_attachment_size(:avatar).
                less_than(2.megabytes) }
end

興味がある場合は、GitHub でマッチャーのソースを見つけることができます

于 2013-02-09T14:44:11.767 に答える