2015-09-03 20 views
0

我試圖記錄如果有人試圖訪問不存在的模塊內的常量會發生什麼。例如,考慮該模塊:如何期待在RSpec測試中的「未初始化的常量」

module Enum 
    GOOD = "good" 
    BAD = "bad" 
end 

訪問枚舉:: GOOD是好的,但枚舉:: MAYBE將拋出一個NameError。我發現在測試表明這一點的唯一方法是搶救的錯誤,但我真正喜歡的是期待它:

describe Enum do 
    it "finds valid values" do 
    expect(Enum::GOOD).to eq("good") 
    expect(Enum::BAD).to eq("bad") 
    end 

    context "bad values throw NameError" do 

    it "allows me to test using rescue" do 
     begin 
     Enum::NOT_VALID 
     fail "should have raised error" 
     rescue NameError 
     end 
    end 

    it "does not allow me to expect a raised error" do 
     expect(Enum::NOT_VALID).to raise_error(NameError) 
    end 
    end 

end 

使用救援條款我唯一/最好在這裏的選擇嗎?請記住,我並不是真的想要實現一個枚舉,而是試圖記錄當你嘗試訪問一個不存在的模塊中的常量時會發生什麼。

回答

3

根據對raise_error的文檔,你應該使用塊:

it "does not allow me to expect a raised error" do 
    expect { Enum::NOT_VALID }.to raise_error(NameError) 
end 
+0

我失蹤究竟是什麼!謝謝! –

相關問題