如何使用Rspec测试使用Paperclip的模型是否validation上传文件的大小?

该模型:

class Attachment  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文件转储到repo中来测试它。 有没有一种方法类似于我上面尝试过的实际工作方式?

我这样做的最好方法是使用Paperclip内置的shoulda匹配器 。 该链接的文档非常好,但是这里有一个关于你可以用它做什么的文档的概述:

在spec_helper.rb中,您需要要求匹配器:

 require "paperclip/matchers" 

并包括模块:

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

validation附件大小的示例:

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

如果您有兴趣,可以在GitHub上找到匹配器的来源