我試圖與規格的語法與rake test
運行MINITEST和得到這個錯誤:MINITEST未初始化的恆定誤差
/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
我的文件結構:
我的script.rb:
module MyGem
class OptionParser
def self.option?(arg)
arg =~ /^-{1,2}\w+$/
end
end
end
使用MINITEST ::規格語法script_spec.rb:
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語法相關的內容嗎?
我不明白爲什麼Rake使用't.libs'呢?我認爲它應該從't.libs'文件夾加載所有文件。默認情況下,'Rake :: TestTask'將'lib'添加到'libs',所以不需要寫't.libs = ['lib']'或類似的東西。我試圖做到這一點,以防萬一,並沒有影響。 – leemour
我明白了。沒有意識到這一點!在這種情況下,我會從我的答案中刪除該行。我的答案是否解決了您的問題? – Gjaldon
我想我現在明白了。還有一個問題。如果我的'script.rb'(在spec_helper.rb中需要)需要我所有的其他gem文件,我應該只需要它,就是這樣嗎?或者我應該對不同的文件分別進行測試?最佳做法是什麼? – leemour