Hatena::Grouprubyist

Rubyist til i die

Wed Dec 5 2007 ちょっとだけよ

[]テストの時だけprivateなメソッドをpublicにする方法 01:55 はてなブックマーク - テストの時だけprivateなメソッドをpublicにする方法 - Rubyist til i die

デバッグのときだけExampleクラスにdebug_methodメソッドを追加し、 private_methodをpublicにする。なんて強力なんだRuby

83's : デバッグ用メソッドはどうするか

いやいや、そこはTest::Unit::TestCaseを使ってですね…というのはともかく、そうか、テストの時だけ改めてクラス定義してprivateなメソッドをpublicにすればいいのか。目から鱗。

class Hoge
  private

  def foobar
  end
end

というprivateなfoobarメソッドに対して、

class Hoge
  public :foobar
end

class TestHoge < Test::Unit::TestCase
  def test_foobar
    hoge = Hoge.new
    assert(hoge.foobar)
  end
end

などとやれば、テストの時だけ一時的にfoobarをpublicにして外から呼び出せるという仕掛け。インタプリタ様々ですね。

rubikitchrubikitch2007/12/06 12:04何度も聞かれる話ですね。
そんなことしなくてもinstance_evalすればいい。
hoge = Hoge.new
assert(hoge.instance_eval{ foobar })

CherryCherry2011/09/08 20:45Stay infromaitve, San Diego, yeah boy!

mrrqtvcifwsmrrqtvcifws2011/09/09 00:29nKBmbx <a href="http://tpjuvkfumblk.com/">tpjuvkfumblk</a>

veaslgkuveaslgku2011/09/09 20:5022Vd4f , [url=http://bipewmyurvva.com/]bipewmyurvva[/url], [link=http://uscxhyuonguh.com/]uscxhyuonguh[/link], http://nasfhsznuztd.com/

vktkjagvktkjag2011/09/11 22:46ssx1L5 <a href="http://tbkyqjtqkgxz.com/">tbkyqjtqkgxz</a>

vaqcxlmxyzlvaqcxlmxyzl2011/09/12 19:11Q2EzPv , [url=http://kkpxoyoahvjv.com/]kkpxoyoahvjv[/url], [link=http://wfzluotvjyyf.com/]wfzluotvjyyf[/link], http://fsfpdskfzjvu.com/