Альтернативные способы указать логическое значение метода

В настоящее время я пытаюсь сделать рефакторинг дубликата кода. В частности, есть одно утверждение, которое доставляет мне больше всего хлопот:

some_class = double("some_class", some_method?: true)

Мне нужно заменить some_method на имя переменной. Тем не менее, ниже не будет работать. Ниже приведен лишь пример того, что я пытаюсь сделать.

some_method = unique_method
some_class = double("some_class", some_method?: true)

Кто-нибудь знает альтернативный способ записи:

some_method? # where some_method is a var. 

Мне нужно уметь звонить

some_class.some_method? 

для моего теста.

Буду признателен за любую оказанную помощь. Заранее спасибо.

2 ответа

Решение

Окружите это строкой, все должно быть хорошо, или вы можете использовать :some_method? => value синтаксис.

def some_method?
  puts "I am some_method?  True"
end

some_hash_key = {:some_method? => true}
send(:some_method?)
my_variable = :some_method?
send(my_variable)          
p some_hash_key

Хорошо... итак, в конце концов, вышесказанное сработало... вот рабочий пример того, что я пытался сделать.. Я использую лямбду для имитации функции

some_method_one = lambda { return }
some_method_one = lambda { return }

picked_method = some_method_one
some_class = double("some_class", picked_one?: true )
some_class.picked_one? # this returns true

Этот код полностью упрощен. То, что я собираюсь сделать (еще не закончил писать логику), это создать shared_examples_for в rspec. У меня есть 4 метода, которые будут использовать ту же логику для тестирования, поэтому мне нужно передать метод в качестве переменной. Надеюсь, это имеет смысл и поможет кому-то помочь..:-)

Другие вопросы по тегам