Альтернативные способы указать логическое значение метода
В настоящее время я пытаюсь сделать рефакторинг дубликата кода. В частности, есть одно утверждение, которое доставляет мне больше всего хлопот:
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 метода, которые будут использовать ту же логику для тестирования, поэтому мне нужно передать метод в качестве переменной. Надеюсь, это имеет смысл и поможет кому-то помочь..:-)