1
我怎樣才能模擬一個數組的排序期望一個lambda表達式?嘲笑排序摩卡
這是我的問題的一個簡單的例子:現在
# 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。但是,還有另外一種方法可以實現這些代碼試圖完成的任務嗎?
注:我已經想出瞭如何解決我的問題,而不需要弄清楚如何做到上述。爲了防止其他人有類似的問題,我會保持這種狀態。
乾杯, 約瑟夫
嗨,約瑟夫,我是布賴恩。我懷疑這個問題是否可能是「with(l)」造成的。用你使用它的方式,不應該用param「l」來調用? – Shuo 2010-04-06 23:53:58
嘿布萊恩, 這是有道理的。起初,我認爲如果你給.sort提供了一個代碼塊,它會通過l來排序。 所以現在我正在尋找另一種方式來做上面的代碼試圖做的事情。 我已編輯帖子以明確包含該請求。 – user175750 2010-04-06 23:58:35
我明白了,你已經在你原來的問題中指出了這一點。 :) 我正在使用未安裝紅寶石的機器。稍後再看這個問題。祝你好運。 – Shuo 2010-04-07 00:08:58