使用Rspec和Paperclip附加并验证模型规格中的图像

时间:2015-05-06 16:26:06

标签: ruby-on-rails ruby rspec paperclip

我正在使用RSpec编写我的用户模型规范,我想测试照片上传是否正常工作 - 非常直接。

但我还没有走得太远。我的模型规范的摘录是这样的:

it "does not allow uploading files other than images for avatar" do
  user = create(:user)
  user.avatar = File.new("#{Rails.root}/public/robots.txt")
end

我创建了我的用户,尝试附加我的文件...但是关于如何实际测试上传或仅仅验证它是否确实是图像(我想上传本身并不是必需的,我只需要验证附件)。不知道。

我已经研究过Paperclip shoulda matchers,例如

it { should validate_attachment_content_type(:icon).
            allowing('image/png', 'image/gif').
            rejecting('text/plain', 'text/xml') }

但对我而言似乎完全没有意义,因为所有这一切都说它应该验证内容类型。但是呢?我怎么知道它是否有效?如何附加文件并查看是否存在?

我已经搜索了很多,用所有可能的关键字组合来找到答案,但到目前为止没有运气。我只是在某种程度上在概念上没有得到它?我显然是一个初学者,所以请不要因为问你看起来多么愚蠢而烧我。

1 个答案:

答案 0 :(得分:0)

您需要查看Paperclip的validate_attachment_content_type匹配器的来源,以确保您对他们的测试方式感到满意。

请参阅:https://github.com/thoughtbot/paperclip/blob/dca87ec5d8038b2d436a75ad6119c8eb67b73e70/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb