Как можно смоделировать сортировку массива, ожидая лямбда-выражения?
Это тривиальный пример моей проблемы:
# 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. Однако, есть ли другой способ сделать то, что пытается сделать этот код?
ПРИМЕЧАНИЕ: я выяснил, как решить мою проблему, не понимая, как это сделать. Я оставлю это открытым на тот случай, если у кого-то еще возникнет подобная проблема.
Cheers,
Джозеф