Lors de l'écriture de tests RSpec, je me retrouve à écrire beaucoup de code ressemblant à ceci afin de m'assurer qu'une méthode a été appelée lors de l'exécution d'un test (par souci d'argument, disons simplement que je ne peux pas vraiment interroger l'état de l’objet après l’appel car l’opération effectuée par la méthode n’est pas facile à voir l’effet de).
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
Ce que je veux savoir, c'est: existe-t-il une syntaxe plus agréable que celle-ci? Est-ce que je manque quelque chose de génial RSpec génial qui réduirait le code ci-dessus à quelques lignes? should_receive
semble vouloir le faire, mais si on lit plus loin, on dirait que ce n'est pas exactement ce que ça fait.
it "should call 'bar' with appropriate arguments" do
expect(subject).to receive(:bar).with("an argument I want")
subject.foo
end
Dans la nouvelle rspec
expect
syntaxe , ce serait:
expect(subject).to receive(:bar).with("an argument I want")
Le ci-dessous devrait fonctionner
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
Documentation: https://github.com/rspec/rspec-mocks#expecting-arguments