Рубиновый эквивалент метакласса Groovy.method_name
У меня есть метод где 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 ответ
Наиболее эквивалентная вещь в Ruby - переопределить метод в вашем тесте, но вы должны рассмотреть использование внедрения зависимостей, чтобы избежать подобных действий. Во всяком случае, здесь мы идем:
instance = Object.new
def instance.get_price_for_symbol(_, _)
99.987
end