Wenn ich RSpec-Tests schreibe, schreibe ich eine Menge Code, der so aussieht, um sicherzustellen, dass eine Methode während der Ausführung eines Tests aufgerufen wurde des Objekts nach dem Aufruf, da die von der Methode ausgeführte Operation den Effekt von) nicht leicht erkennen lässt.
describe "#foo"
it "should call 'bar' with appropriate arguments" do
called_bar = false
subject.stub(:bar).with("an argument I want") { called_bar = true }
subject.foo
expect(called_bar).to be_true
end
end
Was ich wissen möchte ist: Gibt es eine schönere Syntax als diese? Fehlt mir ein bisschen RSpec, das den obigen Code auf ein paar Zeilen reduziert? should_receive
hört sich so an, als ob es das tun sollte, aber wenn man weiter liest, hört es sich so an, als ob es nicht genau das ist, was es tut.
it "should call 'bar' with appropriate arguments" do
expect(subject).to receive(:bar).with("an argument I want")
subject.foo
end
In der neuen rspec
expect
Syntax wäre dies:
expect(subject).to receive(:bar).with("an argument I want")
Das Folgende sollte funktionieren
describe "#foo"
it "should call 'bar' with appropriate arguments" do
subject.stub(:bar)
subject.foo
expect(subject).to have_received(:bar).with("Invalid number of arguments")
end
end
Dokumentation: https://github.com/rspec/rspec-mocks#expecting-arguments