トップ «前の日記(2010/10/24 (日) ) 最新 次の日記(2010/10/26 (火) )» 編集 RSS feed

HsbtDiary


2010/10/25 (月) [長年日記]

[ruby] RUBY_PATCHLEVEL の値

tDiary では footer に RUBY_PATCHLEVEL を表示しているのだけど、1.9.2p0 ではこれが正しく表示されなくて 1.9.2dev と表示されてしまっていた。

というのも、RUBY_PATCHLEVEL に 0 が含まれることを想定していなかったのが原因。ちなみに trunk では 1.8.8/1.9.3 ともに RUBY_PATCHLEVEL は -1 が入っているみたい。

[ruby][rr][rspec] mock と stub

mock, mock, stub, stub とは言うものの今日までだいぶ曖昧なまま使ってきていたけど、先週から今日にかけてやっとわかってきた。

spec を書くときには、必ずといって良いほど stub は使ってテストできないようなメソッドや、DateTime.now のような時間の経過とともにテストが失敗してしまうようなことをさけたりしていたんだけど、これと mock との違いがさっぱりわからなかった。別にテストを作るためなら全部 stub でいいじゃんかと。

でも、とあるメソッドが確実に想定している回数だけ呼ばれることを検証する時には mock を使うということらしい。なるほど、常にどちらかを使うべきというわけではなくて、

  • テスト対象のオブジェクトだけではなく、他のオブジェクトとの関連も含めてテストしたい場合には mock
  • テスト対象のオブジェクトのみに着目してテストしたい場合は stub

と理解したんだけど、これでだいたいあってるかな?

本日のツッコミ(全2件) [ツッコミを入れる]
# kdmsnr (2010/10/26 (火) 00:20)

オレオレ定義かもだけど、テスト対象が機能なのがスタブで、オブジェクトなのがモック。<br><br>機能をスタブアウトするとは言うけど、スタブオブジェクトとは言わない。機能をモックアウトするとは言わないけど、モックオブジェクトという言葉は使う。

# hsbt (2010/10/26 (火) 12:27)

おー、わかりやすい。