加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 运行rake资产:在测试之前预编译,包括:js标记

发布时间:2020-12-17 02:57:10 所属栏目:百科 来源:网络整理
导读:tl;博士 – 只有当运行的测试体中包含:js test时,是否可以运行单个命令(例如rake资产:预编译)? – 我正在开发一个rails 5,ruby 2.3.1应用程序,它有一个大的rspec测试套件. 我们最近在应用程序中安装了webpacker gem,这导致我们必须运行: $bundle exec ra
tl;博士 –

只有当运行的测试体中包含:js test时,是否可以运行单个命令(例如rake资产:预编译)?

我正在开发一个rails 5,ruby 2.3.1应用程序,它有一个大的rspec测试套件.

我们最近在应用程序中安装了webpacker gem,这导致我们必须运行:

$bundle exec rake assets:precompile

在运行测试之前.如果未运行上述命令,则将针对最近预编译的资产运行测试.

这引起了一些令人头疼的事情,因为开发人员已经忘记了这一步骤,然后撞到墙上,直到有人记得在运行测试套件之前运行它.

理想情况下,我只想添加到spec / spec_helper.rb:

config.before(:suite) do
  system('bundle exec rake assets:precompile')
end

但是,这将在每次运行测试套件或其中的任何子集之前运行预编译.这将大大减慢后端开发人员的开发时间,后者只是尝试运行通常需要0.15秒的单个请求规范.

另外,我们通常在使用后卫开发时跳过运行:js测试,因为它们花费的时间太长.在部署或推送到远程分支之前,我们只运行:js specs作为健全性检查.

不幸的是,添加{:js => true}选项:

config.before(:suite,js:true)

也不起作用,因为before(:suite)忽略了选项.

解决方法

使用:js标签过滤并为所有规格运行一次.

ENV[ 'ASSET_PRECOMPILE_DONE' ] = nil

  config.before(:each,:js) do
    if ! ENV[ 'ASSET_PRECOMPILE_DONE' ]
      system 'bundle exec rake assets:precompile'
      ENV[ 'ASSET_PRECOMPILE_DONE' ] = 'true'
    end
  end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读