如何为类或模块级常量编写Ruby UnitTest?

时间:2012-11-28 19:55:00

标签: ruby

如何编写测试以验证类或模块中是否存在常量?

示例:

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

1 个答案:

答案 0 :(得分: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

所以用普通的Ruby你可以:MyModule.const_defined? :VERSION
并使用高光:check(MyModule).const_defined? :VERSION

没有太大的区别,因此无需一次又一次地学习/记忆/回忆。