配列のソートがラムダ式を期待するようにモックするにはどうすればよいですか?
これは私の問題のささいな例です:
# initializing the data
l = lambda { |a,b| a <=> b }
array = [ 1, 2, 3, 4, 5 ]
sorted_array = [ 2, 3, 8, 9, 1]
# I expect that sort will be called using the lambda as a parameter
array.expects(:sort).with( l ).returns( sorted_array )
# perform the sort using the lambda expression
temp = array.sort{|a,b| l.call(a,b) }
さて、最初はこれがうまくいくと思っていました。ただし、次のエラーが発生しました。
- expected exactly once, not yet invoked: [ 1, 2, 3, 4, 5 ].sort(#<Proc:0xb665eb48>)
lがパラメータとしてlに渡されないため、これは機能しないことに気付きました。しかし、このコードが達成しようとしていることを行う別の方法はありますか?
注:上記の方法を理解せずに、問題を解決する方法を理解しました。他の誰かが同様の問題を抱えている場合に備えて、これは開いたままにしておきます。
乾杯、ジョセフ