book.stub(:walk).and_return(true)
普通は上のように使うけど、テスト外とかこれから生成されるbookに対してstubしたい時がある。
any_instance
を使うとこれから生成されるインスタンスに対してstubできる。
Human.any_instance.stub(:walk).and_return(true)
ちなみにand_return
はブロックを渡せる。
Human.any_instance.stub(:walk).and_return do
Lucky.create
end
さらにwith
を使って引数に対応させる。
Human.any_instance.stub(:walk).with(user, "メッセージ").and_return do
Lucky.where(user: user.id, message: "メッセージ").create
end
引数ごとに定義していくのは大変なので、どうでもいいとこはanything
が使える。
Human.any_instance.stub(:walk).with(user, anything).and_return do
Lucky.where(user: user.id, message: "メッセージ").create
end
便利。