2012-11-28 65 views
0

如何編寫測試來驗證類或模塊中存在常量?如何爲類或模塊級常量編寫Ruby UnitTest?

例子:

module MyModule 
    VERSION = "0.3.1" 
end 

我試圖

require 'test/unit' 
require 'shoulda' 
require "my_class" 

class MyModuleTest < Test::Unit::TestCase 
    should "have a Version constant" do 
    # next two lines crash 
    assert_respond_to MyModule, :VERSION 
    assert_respond_to 'VERSION', MyModule 
    end 
end 

回答

2

你可以考慮使用Specular更自然的工作流程,這意味着您可以使用純Ruby的作品的任何方法,因此你不需要記住很多額外的不必要的東西。

require 'specular' 

module MyModule 
    VERSION = "0.3.1" 
end 

Spec.new do 
    check(MyModule).const_defined? :VERSION 
end 

puts Specular.run 


# => check(MyModule).const_defined? :VERSION 
# => - passed 

# => Specs:  1 
# => Tests:  0 
# => Assertions: 1 

因此,與普通的紅寶石你這樣做:MyModule.const_defined? :VERSION
與鏡面:check(MyModule).const_defined? :VERSION

算不上大的差異從而沒有學習/記憶/回憶一遍又一遍。

+0

謝謝@slivu! ''''斷言MyModule.const_defined? :VERSION''''做到了訣竅。我也會給高光寶石一個旋轉。它「感覺」更自然。 – scarver2