tDiary では footer に RUBY_PATCHLEVEL を表示しているのだけど、1.9.2p0 ではこれが正しく表示されなくて 1.9.2dev と表示されてしまっていた。
というのも、RUBY_PATCHLEVEL に 0 が含まれることを想定していなかったのが原因。ちなみに trunk では 1.8.8/1.9.3 ともに RUBY_PATCHLEVEL は -1 が入っているみたい。
mock, mock, stub, stub とは言うものの今日までだいぶ曖昧なまま使ってきていたけど、先週から今日にかけてやっとわかってきた。
spec を書くときには、必ずといって良いほど stub は使ってテストできないようなメソッドや、DateTime.now のような時間の経過とともにテストが失敗してしまうようなことをさけたりしていたんだけど、これと mock との違いがさっぱりわからなかった。別にテストを作るためなら全部 stub でいいじゃんかと。
でも、とあるメソッドが確実に想定している回数だけ呼ばれることを検証する時には mock を使うということらしい。なるほど、常にどちらかを使うべきというわけではなくて、
と理解したんだけど、これでだいたいあってるかな?
オレオレ定義かもだけど、テスト対象が機能なのがスタブで、オブジェクトなのがモック。<br><br>機能をスタブアウトするとは言うけど、スタブオブジェクトとは言わない。機能をモックアウトするとは言わないけど、モックオブジェクトという言葉は使う。
おー、わかりやすい。