2011-12-15 7 views
1

大きなバッチのコードにユニットテストを追加しています。テスト目的で偽のメソッドを挿入する方法を探しています。問題は、私がRubyで知っている限り、メソッドを渡すにはClassName.method(:method_name)を使用し、次にboo()の代わりにboo.call()を使用するメソッドをリファクタリングする必要があるということです。 .method.callのすべてをリファクタリングするより簡単な方法がありますか?.method/.callを使用しないRubyメソッドの保存と呼び出し

+0

かかわら.callをコールする必要がありますか?私はテストのための確かではない:ユニット、しかしrspecで彼らは素晴らしい。 –

+0

それは私がやったことです。私はすでにflexmockがこれを行うことができると知っていましたが、もう少し表現力豊かなものがほしいと思っていました。純粋なRuby(つまり、偽物)より表現力のあるものを見つけるのは難しいです。 –

答えて

1

ラムダを渡すだけではどうですか?つまり、ラムダは他の言語からわかるように、匿名のメソッド/関数なので、正常に動作するはずです。例:

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

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

other_method(fake_method) 

あなたはまだ多分メソッドのモックがお手伝いします

+0

これは、問題の半分である ':method'を使わなければならないのを解決しますが、' 'call'を使うために多くのものをリファクタリングする必要があります。私がちょうど 'fm()'をする方法はありますか? –

+0

残念ながら、いいえ、ありません – maprihoda

+0

fm [] – seph

関連する問題