Хранить и вызывать метод Ruby без использования .method / .call - PullRequest
1 голос
/ 15 декабря 2011

Я добавляю модульные тесты в большой пакет кода и ищу способ вставить поддельные методы в целях тестирования.Проблема в том, что, насколько мне известно в Ruby, для передачи метода в один необходимо использовать ClassName.method(:method_name), а затем рефакторинг метода, который я тестирую, чтобы использовать boo.call() вместо просто boo().Есть ли более простой способ сделать это, чем рефакторинг всего для использования .method и .call?

1 Ответ

1 голос
/ 15 декабря 2011

Почему бы просто не передать лямбды? Я имею в виду, что лямбда - это просто анонимный метод / функция, как вы знаете по другим языкам, поэтому она должна работать нормально. Например:

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

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

other_method(fake_method)

Вам все еще нужно позвонить .call хотя

...