ジョギング
- 昼休みを利用して香椎浜 2 周
- かなりキツかったし、腰もイマイチ
日課
- 腕立てを始めた段階で腰に痛みが出たので止めた
今夜も
- 鍋
- しょうがチューブとにんにくチューブ間違ってしまい、大量のおろしにんにく鍋になってしまった
今日のるびぃ ~ メソッドの公開レベルについて (4) + minitest ~
引き続き, プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで の読書メモ.
サンプルコード
昨日の体重比較コード.
class User attr_reader :name def initialize(name, weight) @name = name @weight = weight end def heavier_than?(other_user) other_user.weight < @weight end protected def weight @weight end end
以下のようにインスタンス化して使う.
foo = User.new('Foo', 50) bar = User.new('Bar', 60) p foo.heavier_than?(bar) #=> false p bar.heavier_than?(foo) #=> true
このコードのテストを書いた.
テストコード
require 'minitest/autorun' require './weight' class WeightTest < Minitest::Test def setup @foo = User.new('Foo', 50) @bar = User.new('Bar', 60) end def test_foo_heavier_than_bar? assert_equal @foo.heavier_than?(@bar), false end def test_bar_heavier_than_foo? assert_equal @bar.heavier_than?(@foo), true end def test_foo_weight assert_equal @foo.send(:weight), 50 end def test_bar_weight assert_equal @bar.send(:weight), 60 end end
protected メソッドは send(:メソッド名)
でイケた.
$ ruby weight_test.rb Run options: --seed 18794 # Running: .... Finished in 0.001874s, 2135.0300 runs/s, 2135.0300 assertions/s. 4 runs, 4 assertions, 0 failures, 0 errors, 0 skips
いい感じ.