最小测试未初始化的常量错误

Leemour

我正在尝试使用Spec语法运行Minitestrake test并出现以下错误:

/path/to/gem/spec/script_spec.rb:3:in `<top (required)>': uninitialized constant MyGem (NameError)

我的Rakefile:

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['spec/*_spec.rb']
end

我的文件结构:

gem/
--lib/
----script.rb
--spec/
----script_spec.rb
--Rakefile

我的script.rb:

module MyGem
  class OptionParser
    def self.option?(arg)
      arg =~ /^-{1,2}\w+$/
    end
  end
end

在script_spec.rb中使用Minitest :: Spec语法:

require "minitest/autorun"

describe MyGem::OptionParser do
  describe "option?" do
    it "must be true for option name" do
      OptionParser.option?('--nocolor').assert true
    end
  end
end

我如何解决它?也许lib文件夹未加载?我会错过与Spec语法相关的内容吗?

贾登

MyGem::OptionParser未加载到您的测试中。您要么需要在规范文件中要求它,要么创建一个spec_helper,在其中您需要所有测试中需要的所有文件,因此您只需要require 'spec_helper'在规范中就可以。

另外,由于您使用的是spec语法,因此您将需要`minitest / spec'。您的spec_helper如下所示:

# spec/spec_helper.rb
require 'minitest/spec'
require 'minitest/autorun'
require 'script'

然后对您的Rakefile执行此操作,这样您就可以require 'script'像上面那样在规范中这样做,而不是这样做require_relative '../lib/script'

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['spec/*_spec.rb']
end

最后,为了使规范require 'spec_helper生效,请在script_spec文件顶部添加'。您必须对所有规格文件执行此操作,并确保将规格中需要加载的所有文件的require添加到spec_helper文件中。

由于您还在进行规范样式的测试,因此您可能需要将测试更改为此:

MyGem::OptionParser.option?('--nocolor').must_equal true

您还可以在“ spec_helper”文件中包含如下代码,以自动加载lib文件夹中的所有文件:

Dir["../lib/**/*.rb"].each do |rb_file|
  require rb_file
end

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jekyll最小错误主题抛出“未初始化的常量Faraday :: Error :: ClientError(NameError)”

Rails 测试错误,NameError:未初始化的常量 User::FILL_IN

为什么收到错误“未初始化的常量SecureRandom?

Rails的路由错误-未初始化的常量SubscribersController

Rails-Sidekiq错误未初始化的常量

未初始化的常量 MiniTest::Test 错误

Rails未初始化的常量名称错误

Ruby错误-未初始化的常量OpenStruct(NameError)

错误:未初始化的常量Guard :: Haml :: Engine

MiniTest错误:“ NameError:未初始化的常量”

Ruby类中的未初始化常量错误

设计错误:NameError(未初始化的常量Unlock)

Net :: IMAP未初始化的常量错误

RSpec错误:未初始化的常量ModuleName :: Chef(NameError)

Rails:路由错误未初始化的常量 RegistrationsController

omniauth facebook未初始化常量错误

如何解决未初始化的常量搜索::错误

Rails显示错误“未初始化的常量URI :: Generic”

使用关系的未初始化常量错误

Ruby on Rails“未初始化的常量”错误

名称错误“未初始化的常量”ruby on rails

NameError:未初始化的常量(rails)

未初始化的常量SearchController :: Instagram

未初始化的常量 Admin::AdminController

未初始化的常量Improvingoutes(NameError)

未初始化的常量Mongo :: Connection

NameError:未初始化的常量Shoulda

未初始化的常量Logger(NameError)

Ruby NameError:未初始化的常量