Рубиновый эквивалент метакласса 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
Другие вопросы по тегам