Minitest 插件(即 minitest/pride)在安装 rails 后不工作

问题描述 投票:0回答:0

我有两个 Ruby 项目(1 个 Rails,1 个 vanilla)。两者都使用 Ruby 3.0.3。在我的 Ruby 项目中(在捆绑我的 Rails 项目之前),Minitest::Pride 已加载并在运行时运行

rake test
。但是,在捆绑 Rails 项目之后,我又回到了 Ruby 项目中
rake test
的旧红色/绿色。

这里是文件结构(为了简单起见,我将 Rails 项目剥离成一个 Gemfile,我可以在干净的 Ruby Rbenv 安装上重现此错误):

ruby-project/
  -- test/
    -- example_test.rb
    -- test_helper.rb
  Gemfile
  Rakefile
rails-project/
  -- Gemfile

ruby-project/test/example_test.rb:

require "test_helper"

class ExampleTest < Minitest::Test
  25.times do |i|
    define_method "test_success#{i}" do
      assert true
    end
  end
end

ruby-project/test/test_helper:

require "minitest/autorun"
require "minitest/pride"

红宝石项目/宝石文件:

source "https://rubygems.org"

gem "rake"
gem "minitest"

红宝石项目/Rakefile:

require "rake/testtask"

Rake::TestTask.new(:test) do |t|
  t.libs = %w(lib test)
  t.pattern = "test/**/*_test.rb"
end

task :default => :test

rails-project/Gemfile:

source "https://rubygems.org"

ruby "3.0.3"
gem "rails", "~> 7.0.3"

重现步骤(已安装 rbenv):

  1. 像上面那样构建两个项目
  2. rbenv install 3.0.3
  3. 来自红宝石项目目录:
    bundle
  4. 来自 ruby-project 目录:
    rake test
    (已加载 Minitest::Pride 插件)
  5. 来自 rails-project 目录:
    bundle
  6. 来自 ruby-project 目录:
    rake test
    (Minitest::Pride 插件未加载)

我尝试过的事情

  1. 将两个项目(5.16.3 和 5.17.0)的 Minitest 锁定到完全相同的版本
  2. 将 Rails 锁定到 7.0.3.1 和 7.0.4.2
  3. 首先捆绑 Rails 项目

我在 M1 Mac 上运行,但我不确定这是否重要。有趣的是,

rails test
在真正的 Rails 项目中将加载 Minitest::Pride。

关于发生了什么以及如何解决的任何想法?

更新

从 Ruby 项目运行

bundle exec rake test
解决了这个问题。但我还是很想知道为什么。特别是当两个项目都使用相同版本的 rake 和 minitest gems 时。

ruby-on-rails ruby minitest
© www.soinside.com 2019 - 2024. All rights reserved.