Ich möchte testen, ob eine Klasse eine Klasse-Methodenaufruf in RSpec erhält:Wie bewirken Sie, dass die Ausführung in RSpec angehalten wird?
describe MyObject do
it "should create a new user" do
expect(User).to receive(:new)
MyObject.new.doit
end
end
class MyObject
def doit
u = User.new
u.save
end
end
Das Problem ist, dass die Erwartung die Ausführung nicht stoppen. Es stubpt einfach die Klassenmethode und setzt die Ausführung fort.
Der Effekt der Erwartung ist sicherzustellen, dass User.new
zurückgibt. Wenn wir also zur nächsten Zeile kommen, die User.save
ist, schlägt es fehl, weil kein Benutzerobjekt .save
aufgerufen werden kann.
Ich möchte, dass die Ausführung stoppt, sobald die RSpec-Erwartung erfüllt wurde - wie kann ich das tun?
nb
Dies ist nur ein illustratives Beispiel - während ein expect to change
würde für User.new arbeitet, ist es nicht der eigentliche Code, den ich
Sie Schönheit Zishe - das ist perfekt –
Ich hoffe, es funktioniert, habe ich nicht versucht – zishe
Ich habe nur getan, und es funktioniert einwandfrei - ty –