ruby-on-rails 如何在每次运行bin/rails test时都不触发yarn编译?

bnl4lu3b  于 2023-11-20  发布在  Ruby
关注(0)|答案(1)|浏览(96)

如果我用bin/rails test运行测试,它会触发yarn运行两次,一次是esbuild,一次是css。如果我用bin/rails test test/**/**.rbbin/rails test test/运行所有相同的测试,测试会立即运行。
为什么我没有运行系统测试时会发生这种情况)?

**版本:**Rails 7.1.1、Ruby 3.2.2、Minitest 5.20.0

使用rails new my_app --javascript esbuild --css bootstrap创建的应用程序

附加问题-下次我如何自己解决这个问题?

我的测试助手似乎没有调用rails test:prepare或其他任何触发yarn的东西:

# test/test_helper.rb
ENV["RAILS_ENV"] ||= "test"
require_relative "../config/environment"
require "rails/test_help"

module ActiveSupport
  class TestCase
    # Run tests in parallel with specified workers
    parallelize(workers: :number_of_processors)

    # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
    fixtures :all

    # Add more helper methods to be used by all tests here...
  end
end

字符串
我试着遍历test_helper.rb中的每个require d文件,但找不到yarn/assets/precompilation被告知发生的其他地方:

  • ../config/environment
  • config/application
  • config/boot
  • rails/all(甚至不知道从哪里开始开始)
  • rails/test_help x1(通读source,但只查看它所需的内容之一)
  • active_support/testing/autorunsource

我还尝试了bundle open minitest,希望有什么配置,但我四处查看了一下,没有看到任何相关的内容。
yarn/asset-compilation“magic”在哪里配置用于测试?

wnrlj8wa

wnrlj8wa1#

“我的测试助手似乎没有调用rails test:prepare
调用rails test而不使用任何参数时,它将为您调用test:prepare

run_prepare_task if self.args.none?(EXACT_TEST_ARGUMENT_PATTERN)

字符串
和源

Rails::Command::RakeCommand.perform("test:prepare", [], {})


如《升级指南》中所述
当通过bin/rails test运行测试时,rake test:prepare任务将在测试运行之前运行。如果您已经增强了test:prepare任务,则您的增强将在测试之前运行。tailwindcss-railsjsbundling-railscssbundling-rails增强了此任务,其他第三方gem也是如此。
您可以看到,这实际上构建了yarn Cssbundling和Jsbundling

相关问题