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?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 是不是有更快的反向字符串算法?

NX 是不是让 ng 服务更快

哪种检查 NSDictionary 是不是包含特定键的方法更快?

MuPdf 库在从 pdf 页面渲染图像时是不是比 xpdf/poppler 更快?

scala 是不是比 java 更快,因为两者都在 JVM 上运行? [复制]

如何在 Perl 测试套件中并行运行一些但不是所有测试?