2016-08-31 1 views
1

У меня есть каркас Ruby-Cucumber. Мне нужно использовать метод method_missing, чтобы избежать написания нескольких повторяющихся функций. Где я должен разместить свой method_missing? В любом файле .rb под папкой support? Или он должен идти в каком-то другом конкретном файле?Где я должен определить method_missing в структуре Rubber Rubber?

+0

Пробовать здесь: Сообщение озаглавлено: «Переопределить метод_изменения для методов класса и экземпляра?» и вы можете получить некоторые идеи о том, как это сделать. http://stackoverflow.com/questions/22846777/override-method-missing-for-class-and-instance-methods – BKSpurgeon

ответ

1

Определение method_missing, как и любой вспомогательный метод огурца, в .rb файл в каталоге support и в модуле, который вы затем перейти к the Cucumber World:

module MethodMissing 
    def method_missing(method) 
    puts "You said #{method}" 
    end 
end 
World MethodMissing 

Затем можно вызывать методы отсутствующие в ступенчатых определений.

Как и любой вспомогательный метод огурца, method_missing следует определять только на огурце World. Если вы определили его на верхнем уровне файла поддержки, он будет определен на объекте верхнего уровня Ruby и доступен повсеместно, что не имеет аналогов и может сломать другой код.

я намеренно не отложить до super, поскольку World не определяет method_missing, или определить respond_to_missing?, так как у меня не было никаких планов для вызова method(:foo) на World, но вы можете сделать эти вещи, если вы предпочитаете всегда делать это, когда вы определяете method_missing.

Смежные вопросы