2015-06-27 36 views
0

在這個例子中,我使用rr gem,並在這裏存根obj.project的對象方法,並將返回值賦給任何變量(在這種情況下是project_data)從任何其他方法或類被調用。摩卡寶石短線方法和分配響應

obj = Object.new 
    project_data = nil 

    stub(obj).project { |*x| project_data = x } 

當我打電話調用項目法OBJ的任何方法,project_data將obj.project方法的返回值來分配。有沒有什麼辦法可以用摩卡寶石來實現這個技巧?我搜索了可能的解決方案,但我找不出任何解決方案

回答

0

在摩卡中,with允許您指定參數匹配器。您可以傳遞一個塊對傳遞給存根方法的參數進行任意測試。

根據參數是否爲可接受值,塊應該返回true或false。在這個例子中,我總是返回true,因爲你沒有指定什麼是有效參數的限制。

但重要的是,由於每當存根被調用時都會執行塊,因此可以在那裏執行project_data賦值。像這樣:

obj = Object.new 
project_data = nil 
obj.stubs(:project).with { |x| project_data = x; true }