RSpec: spécification de plusieurs appels à une méthode avec des arguments différents à chaque fois
Dans rspec (1.2.9), quelle est la bonne manière de spécifier qu'un objet de recevoir plusieurs appels à une méthode avec un argument différent à chaque fois?
Je demande parce que de cette confusion résultat:
describe Object do
it "passes, as expected" do
foo = mock('foo')
foo.should_receive(:bar).once.ordered.with(1)
foo.should_receive(:bar).once.ordered.with(2)
foo.bar(1)
foo.bar(2)
end
it "fails, as expected" do
foo = mock('foo')
foo.should_receive(:bar).once.ordered.with(1) # => Mock "foo" expected :bar with (1) once, but received it twice
foo.should_receive(:bar).once.ordered.with(2)
foo.bar(1)
foo.bar(1)
foo.bar(2)
end
it "fails, as expected" do
foo = mock('foo')
foo.should_receive(:bar).once.ordered.with(1)
foo.should_receive(:bar).once.ordered.with(2)
foo.bar(2) # => Mock "foo" received :bar out of order
foo.bar(1)
end
it "fails, as expected, but with an unexpected message" do
foo = mock('foo')
foo.should_receive(:bar).once.ordered.with(1)
foo.should_receive(:bar).once.ordered.with(2)
foo.bar(1)
foo.bar(999) # => Mock "foo" received :bar with unexpected arguments
# => expected: (1)
# => got (999)
end
end
J'ai attendu le dernier message d'échec à être "prévu: (2)", pas "prévu (1)". Je n'ai utilisé de rspec mal?
Vous devez vous connecter pour publier un commentaire.
Similaire à ce question. La solution recommandée est d'appeler
as_null_object
pour éviter la confusion des messages. Donc:La sortie n'est pas le même que votre deuxième cas (c'est à dire "on attend la 2 mais j'ai reçu 999"), mais il ne montrons que l'attente n'a pas été respecté.