From b3aa2d62c0524156ae5d663b833d4955690b5d77 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sun, 9 Oct 2022 16:59:39 -0600 Subject: [PATCH] Ensure stubs don't leak between examples --- .../dsl/mocks/expect_receive_spec.cr | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/spec/spectator/dsl/mocks/expect_receive_spec.cr b/spec/spectator/dsl/mocks/expect_receive_spec.cr index 78db8b0..a249ad3 100644 --- a/spec/spectator/dsl/mocks/expect_receive_spec.cr +++ b/spec/spectator/dsl/mocks/expect_receive_spec.cr @@ -14,6 +14,12 @@ Spectator.describe "Deferred stub expectation DSL" do # Ensure invocations don't leak between examples. pre_condition { expect(dbl).to_not have_received(:foo), "Leaked method calls from previous examples" } + # Ensure stubs don't leak between examples. + pre_condition do + expect { dbl.foo }.to raise_error(Spectator::UnexpectedMessage) + dbl._spectator_clear_calls # Don't include previous call in results. + end + it "matches when a message is received" do expect(dbl).to receive(:foo) dbl.foo @@ -67,6 +73,12 @@ Spectator.describe "Deferred stub expectation DSL" do # Ensure invocations don't leak between examples. pre_condition { expect(dbl).to_not have_received(:foo), "Leaked method calls from previous examples" } + # Ensure stubs don't leak between examples. + pre_condition do + expect { dbl.foo }.to raise_error(Spectator::UnexpectedMessage) + dbl._spectator_clear_calls # Don't include previous call in results. + end + it "matches when a message is received" do expect(dbl).to receive(:foo) dbl.foo @@ -114,6 +126,12 @@ Spectator.describe "Deferred stub expectation DSL" do # Ensure invocations don't leak between examples. pre_condition { expect(fake).to_not have_received(:foo), "Leaked method calls from previous examples" } + # Ensure stubs don't leak between examples. + pre_condition do + expect { fake.foo }.to raise_error(Spectator::UnexpectedMessage) + fake._spectator_clear_calls # Don't include previous call in results. + end + it "matches when a message is received" do expect(fake).to receive(:foo).and_return(42) fake.foo(:bar) @@ -166,6 +184,12 @@ Spectator.describe "Deferred stub expectation DSL" do # Ensure invocations don't leak between examples. pre_condition { expect(fake).to_not have_received(:foo), "Leaked method calls from previous examples" } + # Ensure stubs don't leak between examples. + pre_condition do + expect(fake.foo).to eq(42) + fake._spectator_clear_calls # Don't include previous call in results. + end + it "matches when a message is received" do expect(fake).to receive(:foo).and_return(0) fake.foo(:bar)