2011-12-15 29 views
1

我將單元測試添加到大量代碼中,並且正在尋找一種方法來插入僞造方法以用於測試目的。問題在於,據我所知,在Ruby中傳遞一個方法必須使用ClassName.method(:method_name),然後重構我測試使用boo.call()而不是僅僅使用boo()的方法。有沒有更容易的方法來做到這一點比重構所有使用.method.call不使用.method/.call存儲和調用Ruby方法

+0

也許嘲笑方法會幫助你?我不確定測試:unit,但在rspec中他們很棒。 – 2011-12-15 17:47:18

+0

這就是我最終做的。我已經知道flexmock可以做到這一點,但想要更有表現力的東西,並且很難找到比純Ruby更具表現力的東西(即假貨),但不會以重構我的代碼庫爲代價。 – 2011-12-15 20:06:07

回答

1

爲什麼不通過lambdas?我的意思是,lambda只是一個匿名方法/函數,就像你從其他語言中知道的一樣,所以它應該可以正常工作。例如:

fake_method = lambda { |n| "do something with n" } 

def other_method(fm) 
    #... 
    fm.call 
    #... 
end 

other_method(fake_method) 

你仍然需要調用.call雖然

相關問題