2016-08-31 1 views
1

Ich habe ein Ruby-Cucumber-Framework. Ich muss die Methode method_missing verwenden, um zu vermeiden, einige sich wiederholende Funktionen zu schreiben. Wo sollte ich meine method_missing platzieren? In jeder .rb Datei unter der support Ordner? Oder sollte es in einer anderen spezifischen Datei gehen?Wo sollte ich method_missing in einem Cucumber Ruby Framework definieren?

+0

Versuchen Sie es hier: Post hat den Titel: "Override method_missing für Klassen- und Instanzmethoden?" und Sie könnten einige Ideen bekommen, wie es geht. http://stackoverflow.com/questions/22846777/override-method-missing-for-class-and-instance-methods – BKSpurgeon

Antwort

1

definiert method_missing wie jeder Cucumber Helper-Methode, in einer .rb Datei im support Verzeichnis und in einem Modul, das Sie dann zu the Cucumber World passieren:

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

Sie dann in Schritt Definitionen fehlen Methoden aufrufen können.

Wie jede Cucumber-Helfer-Methode sollte method_missing nur für die Gurke World definiert werden. Wenn Sie es auf der obersten Ebene der Support-Datei definiert haben, wird es auf dem Top-Level-Objekt von Ruby definiert und überall verfügbar sein. Dies ist untergeordnet und kann anderen Code beschädigen.

Ich habe aufschieben bewusst nicht zu super, da die World nicht method_missing nicht definiert, oder respond_to_missing? definieren, da ich noch keine Pläne hatte method(:foo) auf der World zu nennen, aber man kann diese Dinge tun, wenn Sie es vorziehen, um sie immer zu tun, wenn Sie method_missing definieren.

Verwandte Themen