1

ルビーで単一のメソッドをテストしようとしています。それは別のファイルにあるので、基本的に:

a.rb:

def my_method
  ...
end

私のa_spec.rbで

require 'minitest/autorun'

Object.instance_eval do
  load("path_to/a.rb")

  def hello_world
    ...
  end
end

テストを実行しようとすると、my_method はプライベート メソッドであると表示されますが、実際にはObject.hello_world完全に呼び出すことができます。何を与える?

また、minitest で単純な Ruby メソッド (クラスやモジュールなし) をテストする簡単な方法はありますか?

4

1 に答える 1

0

上記のロードを実行しても、 a.rbのメソッドはシングルトンメソッドとしてObjectに追加されません。むしろ、グローバル名前空間にメソッドを追加します。(selfがObjectクラスを参照するブロック内でロードを実行しているという事実は関係ありません。)

上記のコードを使用すると、テストで*my_method*を直接呼び出すことができるはずです。

class MyTest <  MiniTest::Unit::TestCase

  def test_my_method
    assert my_method
  end

  def test_hello_world
    assert Object.hello_world
  end
end
于 2012-05-29T21:37:17.510 に答える