Paperclip/Rspec测试:有没有更快的方法测试paperclip validates_attachment_content_type?

13

我注意到的一件事是,在我做的大多数项目中,总会有一个规范需要很长时间(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 上运行,但尽管如此,我仍然希望有人能够更快地测试图像内容类型。


这个规范应该运行得很快,因为这个匹配器不执行任何真正的图像上传/写入操作,请查看https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb。我认为问题可能埋藏在更深的地方。你能粘贴整个规范或者`log/test.log`的输出吗? - luacassus
很奇怪,它确实可以。现在,这些类型的测试通常在<0.5秒内运行。...我希望我能帮忙,但是我遇到问题的参考已经被遗忘很久了。 - PlankTon
1
我是发起悬赏的人。使用Paperclip 2.x仍然非常缓慢。这在3.x中解决了吗? - Pedro Nascimento
我对解决这个问题的记忆有点模糊,但我认为3.0升级可能解决了这个问题。我的3.0项目肯定没有这个问题。 - PlankTon
1个回答

0

看起来你正在对paperclip进行自己的测试。

通常情况下,我会让gem提供商(特别是像这样的大型产品)在发布之前认证他们的规格将成功运行。

我会从我的测试中挖掘出实际的paperclip内容,以使它们更快,就像这样放置在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

这是因为你没有正确地存根它。从今天起,正确的存根方式应该是:https://gist.github.com/gabrielecirulli/6340651(由于Paperclip代码结构的更改,它可能会在将来发生变化)。 - kettlepot

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