隣の席に座っている会長に教えてもらった。
it "2回目のtransactionではMashal.loadが1回だけ呼ばれる" do
Marshal.should_receive(:load).exactly(4).and_return({})
PStore.new(@dbfile).transaction {}
PStore.new(@dbfile).transaction {}
end
上記の例では PStore.transaction を2回呼ぶと Mashal.load が4回呼ばれることを検証している。
この辺や mock ライブラリとかの使い方について、まだまだ勉強していかないといかんなあ。
おもむろに script/dbconsole mongo shell を叩いてこんな感じ
> show dbs
admin
carrierwave_test
local
> use carrierwave_test
switched to db carrierwave_test
> db.dropDatabase()
{ "dropped" : "carrierwave_test.$cmd", "ok" : 1 }
use してデータベースを選択してから drop というのが最初は慣れなかった。
残念ながら script/dbconsole で mongo shell が起動するのはうちのプロジェクトだけだと思います…。
な、なんだってー!
The RSpec Book!
ぐぬぬ、そんな本があったのか。