Ruby相当于Groovy的metaclass.method_name

时间:2013-10-03 16:45:07

标签: ruby metaprogramming metaclass

我有一种方法,其中symbol_price是一个散列,其中键作为符号,价格作为值。

def get_price_for_symbol(symbol_price, symbol)
  symbol_price[symbol]
end

在Groovy中,如果我们想要模拟我们在测试类中编写的主类方法get_price_for_symbol

object.metaClass.get_price_for_symbol = { symbol_price, symbol -> 99.987 }

我们如何在Ruby中做类似的事情?

1 个答案:

答案 0 :(得分:0)

Ruby中最等效的事情是在测试中重新定义方法,但是你应该考虑使用依赖注入来避免做这种事情。无论如何,我们走了:

instance = Object.new

def instance.get_price_for_symbol(_, _) 
  99.987
end