1
我將單元測試添加到大量代碼中,並且正在尋找一種方法來插入僞造方法以用於測試目的。問題在於,據我所知,在Ruby中傳遞一個方法必須使用ClassName.method(:method_name)
,然後重構我測試使用boo.call()
而不是僅僅使用boo()
的方法。有沒有更容易的方法來做到這一點比重構所有使用.method
和.call
?不使用.method/.call存儲和調用Ruby方法
我將單元測試添加到大量代碼中,並且正在尋找一種方法來插入僞造方法以用於測試目的。問題在於,據我所知,在Ruby中傳遞一個方法必須使用ClassName.method(:method_name)
,然後重構我測試使用boo.call()
而不是僅僅使用boo()
的方法。有沒有更容易的方法來做到這一點比重構所有使用.method
和.call
?不使用.method/.call存儲和調用Ruby方法
爲什麼不通過lambdas?我的意思是,lambda只是一個匿名方法/函數,就像你從其他語言中知道的一樣,所以它應該可以正常工作。例如:
fake_method = lambda { |n| "do something with n" }
def other_method(fm)
#...
fm.call
#...
end
other_method(fake_method)
你仍然需要調用.call
雖然
也許嘲笑方法會幫助你?我不確定測試:unit,但在rspec中他們很棒。 – 2011-12-15 17:47:18
這就是我最終做的。我已經知道flexmock可以做到這一點,但想要更有表現力的東西,並且很難找到比純Ruby更具表現力的東西(即假貨),但不會以重構我的代碼庫爲代價。 – 2011-12-15 20:06:07