Wie kann ich Modulfunktionen eines selbstgeschriebenen Moduls in meinem Projekt vortäuschen?Wie Ruby-Modul-Funktionen mockten?
das Modul und Funktion Bei
module ModuleA::ModuleB
def self.my_function(arg)
end
end
die wie
ModuleA::ModuleB::my_function(with_args)
Wie soll ich es verspotten genannt wird, wenn es in einer Funktion verwendet wird I Spezifikationen für mich schreiben?
es Verdoppeln (obj = double("ModuleA::ModuleB")
) macht keinen Sinn für mich, da die Funktion auf dem Modul aufgerufen wird und nicht auf ein Objekt.
Ich habe versucht es stubbing (ModuleA::ModuleB.stub(:my_function).with(arg).and_return(something)
). Offensichtlich hat es nicht funktioniert. stub
ist dort nicht definiert.
Dann habe ich es mit should_receive
versucht. Wieder NoMethodError
.
Was ist die bevorzugte Art, ein Modul und seine Funktionen zu verspotten?
, die im Grunde ist, was ich versuchte. Danke für die Nachbearbeitung. Mein Problem war jedoch, dass ich das 'sollte_receive' in einen' before: all'-Block schreiben sollte. Offensichtlich funktioniert das nicht. Wie dumm von mir. –
@Torbjoern, Oh ja. War dort. Freut mich, dass es geklappt hat. –
In der aktuellen rspec (3.6) gibt es "Using' sent_receive "aus rspec-mocks 'old': sollte' Syntax ohne explizite Aktivierung der Syntax ist veraltet. Verwenden Sie die neue ': expect' Syntax oder aktivieren Sie explizit': should'. " –