0

クラスまたはモジュールに定数が存在することを確認するためのテストをどのように作成しますか?

例:

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
4

1 に答える 1

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
なります。Specularでは次のようになります。check(MyModule).const_defined? :VERSION

それほど大きな違いではないので、何度も何度も学ぶ/覚える/思い出すものは何もありません。

于 2012-11-28T20:16:58.277 に答える