图像显着减慢 Rspec 请求规范

Posted

技术标签:

【中文标题】图像显着减慢 Rspec 请求规范【英文标题】:Images significantly slowing Rspec request spec 【发布时间】:2018-11-02 20:52:02 【问题描述】:

因此,由于存在两个小图像(每个 3k 大小),我的请求规范大大减慢了速度。同一个页面有两个更大的图像,一个超过 700k,但这些图像没有任何问题。这是代码(我讨厌的很苗条,但无论如何):

.row.columns#banner
  = image_tag image_url("banner-tail-left.png"), class: 'banner-tail-left'
  .banner-text WELCOME
  = image_tag image_url("banner-tail-right.png"), class: 'banner-tail-right'

以下是测试速度:

两张图片都显示:

Finished in 4.01 seconds
Finished in 3.27 seconds
Finished in 3.55 seconds
Finished in 3.5 seconds

除非 Rails.env.test? 隐藏了两个图像?:

Finished in 1.56 seconds
Finished in 1.38 seconds
Finished in 1.23 seconds
Finished in 1.2 seconds

仅显示其中一张图片,时间就像它们都在显示一样缓慢。如果我用其他图像路径替换这两个图像路径,它会很快。知道可能是什么原因造成的吗?有没有办法告诉 Rspec 忽略所有图像?

【问题讨论】:

@JayDorsey 不,只是 Rspec 请求规范。有必要提capybara、phantomjs、selenium等吗?这是一个请求规范,而不是功能规范。嗯……FactoryGirl。 If 仅在您使用它们时才相关。由于没有显示测试,也没有显示您的帮助文件/配置,所以我的问题是一个低调的问题,旨在排除潜在的错误配置。调试时唯一想到的其他事情是查看test.rb 配置文件以了解您的资产设置(如果有人更改了它们)。此外,春天浮现在脑海 @JayDorsey 是的,这真的只是一个非常基本的请求测试。事实上,我只是尝试将其更改为一个完全静态的页面,测试只是获取“/path”和expect(true).to 为真,它仍在执行此操作。执行此操作的图像文件是 png,它们位于基本图像文件夹中,但基本图像文件夹中还有其他 png 不会减慢我的测试速度。我在 rails_helper 文件中看不到任何与资产相关的内容。不知道春天。 非常有趣的行为。我认为没有办法告诉 RSpec 忽略加载图像(你可以在使用 Capybara 时这样做,这是我之前问过的另一个原因)。如果无法检查图像或代码,这可能很难排除故障。由于您已经尝试用不同的图像替换(并且速度又快了),所以我将专注于检查这些图像。也许它们是名为 PNG 的 JPG 文件,或者应用了一些会减慢渲染速度的东西(alpha 通道?)我不太确定资产管道是否会在这些测试中发挥作用...... 您能否发布一张或多张慢速图像的链接?想在我的机器上进行本地测试,看看我是否可以重新创建它。如果您使用其他帮助程序之一,例如image_path,那也很慢吗?另外,使用image_tag + image_url,我认为标签知道在资产管道中查找的位置。两者都需要吗? 【参考方案1】:

尝试使用 imagemagick (convert -strip) 剥离所有图像元数据,或者如果使用 gimp 则以任何方式“重新制作”。

【讨论】:

好主意,但这不起作用。转换为 jpg 也不起作用。

以上是关于图像显着减慢 Rspec 请求规范的主要内容,如果未能解决你的问题,请参考以下文章

在 RSpec 请求规范中使用 Capybara 时设置自定义请求标头的最佳方法是啥?

配置 RSpec 以对所有请求规范使用 Capybara.javascript_driver

devise 和 rspec-rails - 如何在请求类型规范(带有 type: :request 标记的规范)中登录用户?

Rspec:在路由规范中添加一些头请求

cvWaitKey() 显着减慢捕获过程 - 解决方法?

在 rspec 中为 API 规范存根protect_from_forgery