2016-11-21 40 views
1

我不斷收到Undefined method all_empty?錯誤。我是否錯誤地開課?Rspec錯誤:未讀取我在數組中的擴展方法

core_extensions.rb

class Array 
    def all_empty? 
     self.all? { |element| element.to_s.empty? } 
    end 
end 

core_extensions_spec.rb:

require "spec_helper" 

describe Array do 
    context "#all_empty?" do 
     it "returns true if all elements of the Array are empty" do 
      expect(["","",""].all_empty?).to be true 
     end 

     it "returns false if some of the Array elements are not empty" do 
      expect(["","1", Object.new, :a].all_empty?).to be false 
     end 

     it "returns true for an empty Array" do 
      expect([].all_empty?).to be true 
     end 
    end 
end 
+0

「core_extension.rb」存在於哪裏?你把它包含在測試環境中嗎? –

+1

您的擴展程序未加載(在測試環境中) –

+0

您的生活意味着什麼?我怎麼知道我將它包含在測試環境中?你們是不是要求'path/core_extensions.rb'? –

回答

2

只是在你的core_extensions_spec.rb添加require_relative 'path/to/core_extensions.rb'

如果您在其他測試中需要core_extensions.rb,您可以將此行添加到您的spec_helper.rb

+0

這工作,但我很困惑,是不是意味着工作,你不需要文件?既然你擴大了班級,還是我只是啞巴? –

+0

你不笨。需要執行代碼才能擴展Array類。您的計算機上可能有數百個rb腳本,Ruby應該如何知道要解釋哪一個腳本?您必須手動需要所有您需要的文件,或者讓Rails自動加載或加載所有* _spec.rb文件的Rspec發生一些奇蹟。 –

+0

我明白了,我不是爲什麼我雖然不需要,謝謝 –