回形针/Rspec 测试:有没有更快的方法来测试回形针validates_attachment_content_type?

Paperclip/Rspec tests: Is there a faster way to test paperclip validates_attachment_content_type?

提问人:PlankTon 提问时间:11/16/2011 更新时间:8/7/2013 访问量:1561

问:

我注意到的一件事是,在我所做的大多数项目中,总是需要很长时间(30 秒 +)的一个规范是这个应该/回形针助手:

it { should validate_attachment_content_type(:bannerimage)
  .allowing('image/png', 'image/jpeg', 'image/gif', 'image/jpg')
  .rejecting('text/plain')
}

我很想保留内容类型验证,但我想知道是否有更快的方法可以做到这一点。我已经用 :slow 标记了这些测试,并在没有 :slow 规范的情况下运行 rspec,但尽管如此,我希望有人有一种更快的方法来测试图像内容类型。

Ruby-on-Rails rSpec 应该有 回形针验证

评论

0赞 luacassus 10/25/2012
这个规范应该运行得很快,因为这个匹配器不执行任何真实的图像上传/写入的东西,检查 github.com/thoughtbot/paperclip/blob/master/lib/paperclip/...我认为问题可能埋藏在更深的地方。你能粘贴整个规范或输出吗?log/test.log
0赞 PlankTon 10/25/2012
奇怪的是 - 它确实如此。如今,这些 sortsa 测试通常在 0.5 秒<运行。...我希望我能帮上忙,但是我遇到这个问题的地方早已被遗忘了
1赞 Pedro Nascimento 10/27/2012
我是开始赏金的人。使用回形针 2.x 仍然很慢。这在 3.x 中解决了吗?
0赞 PlankTon 10/27/2012
我对解决这个问题的记忆有点模糊,但我认为 3.0 升级可能已经成功了。当然,我的 3.0 项目没有这个问题。

答:

0赞 Kevin 8/7/2013 #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

评论

0赞 kettlepot 8/26/2013
那是因为你没有正确地把它存根出来。截至今天,存根的正确方法是:gist.github.com/gabrielecirulli/6340651(由于回形针代码结构的变化,将来可能会发生变化)