ruby-on-rails - NameError:未初始化的常量 Minitest::VERSION

标签 ruby-on-rails ruby minitest

我正在使用 Rails 4.1 和 Ruby 2.0.0。我正在尝试使用 minitest-rails 设置测试,但遇到了这个奇怪的错误。当我包括:

require 'minitest/spec'

在我的“spec_helper”文件中,它给了我一个 NameError: uninitializedconstant Minitest::VERSION 错误。当我注释掉这一行时,一切似乎都工作正常。奇怪的是,“minitest/autorun”也在那里并且没有引起任何问题。也许你们可以了解一下这里发生的事情。

spec_helper.rb:

ENV["RAILS_ENV"] ||= "test"
require File.expand_path('../../config/environment', __FILE__)

require 'minitest/spec'
require 'minitest/autorun'
require 'minitest-rails'
require 'minitest-rails-capybara'

Rakefile:

    require File.expand_path('../config/application', __FILE__)

    Pinteresting::Application.load_tasks

    namespace :test do
      task :run do
        ENV["RACK_ENV"] = "test"
        $LOAD_PATH.unshift("lib", "spec")
        if ARGV[1]
          require_relative ARGV[1]
        else
          Dir.glob("./spec/**/*_spec.rb").each { |file| require file }
        end
      end
    end

.spec:

    require "spec_helper"

    describe "Test" do
      describe "When two is equal to two" do 
        it "asserts true" do
          assert_equal(2, 2)
        end
      end
    end

堆栈跟踪:

    nbp-93-202:pinteresting Frank$ rake test:run
    rake aborted!
    NameError: uninitialized constant Minitest::VERSION
    /usr/local/rvm/gems/ruby-2.0.0-p481/gems/minitest-5.3.4/lib/minitest/unit.rb:22:in `<class:Unit>'
    /usr/local/rvm/gems/ruby-2.0.0-p481/gems/minitest-5.3.4/lib/minitest/unit.rb:21:in `<module:Minitest>'
    /usr/local/rvm/gems/ruby-2.0.0-p481/gems/minitest-5.3.4/lib/minitest/unit.rb:20:in `<top (required)>'
    /usr/local/rvm/gems/ruby-2.0.0-p481/gems/minitest-5.3.4/lib/minitest/spec.rb:1:in `<top (required)>'
    /Users/Frank/Desktop/pinteresting/spec/spec_helper.rb:4:in `<top (required)>'
    /Users/Frank/Desktop/pinteresting/spec/diagnostic_spec.rb:1:in `<top (required)>'
    /Users/Frank/Desktop/pinteresting/Rakefile:12:in `block (3 levels) in <top (required)>'
    /Users/Frank/Desktop/pinteresting/Rakefile:12:in `each'
    /Users/Frank/Desktop/pinteresting/Rakefile:12:in `block (2 levels) in <top (required)>'
    Tasks: TOP => test:run

最佳答案

有趣的是,如果尝试运行或要求仅包含两个要求 minitest/specminitest/autorun 的文件,解释器会发出警告,指出您应该 require 'minitest/autorun' 来代替,或者在 require 'minitest/autorun' 之前添加“gem 'minitest'”,尽管它不会给我带来NameError

因此,切换 require 语句(以便首先需要 minitest/autorun)似乎可以解决问题。首先要求 minitest 似乎也能达到目的。

关于ruby-on-rails - NameError:未初始化的常量 Minitest::VERSION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24247759/

相关文章:

ruby-on-rails - rails : Sending PUT Request using curl/Postman to update an attribute

ruby - 找不到 Mongo Ruby 驱动程序游标错误

ruby-on-rails - 你如何使用 Minitest、Capybara、Selenium 执行 javascript 测试?

ruby-on-rails - 是否值得尝试尽可能多地重用测试夹具?

ruby-on-rails - 试图理解 sort_by 函数在 Ruby 中的工作原理

mysql - Rails ActiveRecord/SQL 查询最佳实践

ruby-on-rails - 在 ruby​​ on Rails 中将参数作为路径变量传递

javascript - (Ruby、Rails、Javascript)使用 javascript 窗口等管理嵌套模型...?

javascript - 使用 Javascript 变量存储来自 <%= %> 的 Ruby 输出

ruby-on-rails - 如何测试 Apartment、Minitest、Capybara 和 Selenium