Paperclip/Rspec 测试:是不是有更快的方法来测试回形针 validates_attachment_content_type?
Posted
技术标签:
【中文标题】Paperclip/Rspec 测试:是不是有更快的方法来测试回形针 validates_attachment_content_type?【英文标题】:Paperclip/Rspec tests: Is there a faster way to test paperclip validates_attachment_content_type?Paperclip/Rspec 测试:是否有更快的方法来测试回形针 validates_attachment_content_type? 【发布时间】:2011-12-30 02:52:42 【问题描述】:我注意到的一件事是,在我所做的大多数项目中,总是需要很长时间(30 秒以上)的一个规范是这个 shoulda/paperclip 助手:
it should validate_attachment_content_type(:bannerimage)
.allowing('image/png', 'image/jpeg', 'image/gif', 'image/jpg')
.rejecting('text/plain')
我很想保留内容类型验证,但我想知道是否有更快的方法来做到这一点。我已经用 :slow 标记了这些测试并在没有 :slow 规范的情况下运行 rspec,但尽管如此,我希望有人能更快地测试图像内容类型。
【问题讨论】:
这个规范应该运行得很快,因为这个匹配器不执行任何真实的图像上传/写入工作,检查github.com/thoughtbot/paperclip/blob/master/lib/paperclip/…我认为这个问题可能被埋在更深的地方。你能粘贴整个规范或log/test.log
输出吗?
奇怪的是——确实如此。如今,这些排序测试通常在
我是发起赏金的人。使用 Paperclip 2.x 仍然很慢。这在 3.x 中解决了吗?
我解决这个问题的记忆有点模糊,但我认为 3.0 升级可能已经成功了。当然我的 3.0 项目没有这个问题。
【参考方案1】:
看起来您正在针对回形针运行自己的测试。
一般来说,我让 gem 供应商(尤其是像这样的大型产品)证明他们的规范会在发布之前成功运行。
我从我的测试中提取出实际的回形针内容,以使它们像这样更快,放在 spec_helper.rb 中
# stub out paperclip? http://pivotallabs.com/stubbing-out-paperclip-imagemagick-in-tests/
# only like .1 seconds faster anyways though...
module Paperclip
def self.run cmd, params = "", expected_outcodes = 0
case cmd
when "identify"
return "100x100"
when "convert"
return
else
super
end
end
end
class Paperclip::Attachment
def post_process
end
end
【讨论】:
那是因为你没有正确地把它存根。截至今天,正确的存根方法是:gist.github.com/gabrielecirulli/6340651(将来可能会因回形针代码结构的变化而改变)以上是关于Paperclip/Rspec 测试:是不是有更快的方法来测试回形针 validates_attachment_content_type?的主要内容,如果未能解决你的问题,请参考以下文章
哪种检查 NSDictionary 是不是包含特定键的方法更快?
MuPdf 库在从 pdf 页面渲染图像时是不是比 xpdf/poppler 更快?