メルマガねた
ブロック先をモックにしてBehavior Verification.
ブロックだと無名のメソッドになるから、名前の「do」が重要じゃなくなる。
class StringToSortedIntArrayFilter def run(message) yield(message.split(",").collect{ |node| node.to_i }.sort) end end describe StringToSortedIntArrayFilter do before do @mock = mock("フィルターの先のモック") @filter = StringToSortedIntArrayFilter.new end it "コンマ区切りの文字列をソート済みの数値の配列に変換するフィルターの役割を果たすこと" do @mock.should_receive(:do).with([1,2,7,8]) @filter.run("2,7,1,8") { |nodes| @mock.do(nodes) } end end