ジョギング
- 朝から雨というのと、腰痛がジワリとあるのでお休み
日課
- お休み
佐世保のゆーちゃん
佐世保に住んでいる奥さんのおじさん宅に訪問。テーブル一杯に並べられた手料理と尽きない話で楽しい時間を過ごした。四王寺坂の正三おじさんと、佐世保のゆーちゃん、りょーちゃんにはいつも気にかけてもらって、優しくして頂いて本当に感謝している。色々とあるけど、こんな親戚付き合いが続くといいなあ。
今日のるびぃ ~ minitest ~
オブジェクトにメソッドが存在する minitest のメソッド MiniTest::Assertions#assert_respond_to を試す.
class Sample def foo 'foo' end def bar 'bar' end private :bar end
以下のようにテストを書く.
require 'minitest/autorun' require './sample' class SampleTest < Minitest::Test setup do @baz = Sample.new end def test_call_foo_method assert_respond_to(@baz, :foo) end def test_call_bar_method assert_respond_to(@baz, :bar) end end
実行してみる.
$ ruby sample1_test.rb Run options: --seed 53217 # Running: F. Finished in 0.000958s, 2087.3340 runs/s, 2087.3340 assertions/s. 1) Failure: SampleTest#test_call_bar_method [sample1_test.rb:14]: Expected #<Sample:0x000055ea281955d8> (Sample) to respond to #bar. 2 runs, 2 assertions, 1 failures, 0 errors, 0 skips
bar メソッそは private メソッドで, private メソッドはオブジェクトをレシーバとして呼べないことを確認.
Object#respond_to? では, 第二引数に true
を指定することで, private メソッドも true) となるのに, assert_respond_to に同等のオプションがなぜないのかちょっと疑問が残る.
baz = Sample.new p baz.respond_to?(:foo) #=> true p baz.respond_to?(:bar) #=> false p baz.respond_to?(:bar, true) #=>true
ふむふむ.