Как я могу издеваться над сортировкой массива, ожидая выражения лямбда?Mocking Sort With Mocha
Это тривиальный пример моей проблемы:
# 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. Однако есть ли другой способ сделать то, что этот код пытается выполнить?
ПРИМЕЧАНИЕ. Я выяснил, как решить мою проблему, не выясняя, как это сделать. Я оставлю это открытым на случай, если у кого-то есть аналогичная проблема.
Приветствия, Джозеф
Привет, Джозеф, я Брайан. Я подозреваю, может ли проблема быть вызвана «с (l)». С помощью того, как вы его используете, не следует сортировать вызов с параметром «l»? – Shuo
Hey Bryan, Это имеет смысл. Сначала я предположил, что если вы предоставили блок кода для .sort, он передал бы l для сортировки. Итак, теперь я ищу другой способ сделать то, что пытается сделать этот код. Я отредактировал сообщение, чтобы конкретно включить этот запрос. – user175750
Вижу, вы уже указали это в своем первоначальном вопросе. :) Я использую машину, на которой рубин не установлен. Посмотрите на эту проблему позже. Удачи. – Shuo