使用Rspec测试Paperclip图片样式

4

我有一个横幅,附带一个使用Paperclip的文件。上传图片时,Paperclip会使用“styles”参数创建图片的“derivatives”。

class Banner < ActiveRecord::Base
  has_attached_file :image,
                    :styles => {:medium => "300x300>",
                                :thumb  => "100x100>"}
end

我希望测试这个attached_file的生成,最好不要测试整个往返到磁盘等等。我可以创建一个Banner,附加一个文件,然后查看文件系统是否创建了某个具有特定尺寸的文件,但这与我的想法相悖,即测试一个专注的部分,而不是测试整个堆栈。

如何测试附加的文件:image是否具有Paperclip中的某些样式?

1个回答

1

has_attached_file方法所做的就是将传递的定义添加到模型中。生成由paperclip完成,不需要进行测试。

Source: https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip.rb#L174

然而,您可以使用attachment_definitions方法测试定义是否正确创建。类似这样:

it "has correct image style geometry" do
   Banner.attachment_definitions[:data][:styles][:medium][:geometry].should == "300x300>"
   Banner.attachment_definitions[:data][:styles][:thumb][:geometry].should == "100x100>"
end

谢谢。我知道我不需要测试Paperclip;但是在BDD中,我想先编写像it "should have a thumbnail" do这样的测试,然后再实现它。 - berkes
1
我原本的 attachment_definitions[:data] 是空的。所以我使用 Attachment.attachment_definitions[:attached_file][:styles][:small] 结构使其工作了。 - Alexander Kuznetsov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接