To add a collaborator to this project you will need to use the Relish gem to add the collaborator via a terminal command. Soon you'll be able to also add collaborators here!
More about adding a collaboratorExpecting messages
Use expect(...).to receive(...)
to expect a message on a test double. Unfulfilled
message expectations trigger failures when the example completes. You can also use
expect(...).not_to receive(...)
to set a negative message expectation.
- Scenarios
-
- Failing positive message expectation
- Passing positive message expectation
- Failing negative message expectation
- Passing negative message expectation
- Failing positive message expectation with a custom failure message
- Failing negative message expectation with a custom failure message
- Failing positive message expectation
-
- Given
-
a file named "unfulfilled_message_expectation_spec.rb" with:
RSpec.describe "An unfulfilled positive message expectation" do it "triggers a failure" do dbl = double("Some Collaborator") expect(dbl).to receive(:foo) end end
- When
-
I run
rspec unfulfilled_message_expectation_spec.rb
- Then
-
it should fail with:
1) An unfulfilled positive message expectation triggers a failure Failure/Error: expect(dbl).to receive(:foo) (Double "Some Collaborator").foo(*(any args)) expected: 1 time with any arguments received: 0 times with any arguments
- Passing positive message expectation
-
- Given
-
a file named "fulfilled_message_expectation_spec.rb" with:
RSpec.describe "A fulfilled positive message expectation" do it "passes" do dbl = double("Some Collaborator") expect(dbl).to receive(:foo) dbl.foo end end
- When
-
I run
rspec fulfilled_message_expectation_spec.rb
- Then
- the examples should all pass
- Failing negative message expectation
-
- Given
-
a file named "negative_message_expectation_spec.rb" with:
RSpec.describe "A negative message expectation" do it "fails when the message is received" do dbl = double("Some Collaborator").as_null_object expect(dbl).not_to receive(:foo) dbl.foo end end
- When
-
I run
rspec negative_message_expectation_spec.rb
- Then
-
it should fail with:
1) A negative message expectation fails when the message is received Failure/Error: dbl.foo (Double "Some Collaborator").foo(no args) expected: 0 times with any arguments received: 1 time
- Passing negative message expectation
-
- Given
-
a file named "negative_message_expectation_spec.rb" with:
RSpec.describe "A negative message expectation" do it "passes if the message is never received" do dbl = double("Some Collaborator").as_null_object expect(dbl).not_to receive(:foo) end end
- When
-
I run
rspec negative_message_expectation_spec.rb
- Then
- the examples should all pass
- Failing positive message expectation with a custom failure message
-
- Given
-
a file named "example_spec.rb" with:
RSpec.describe "An unfulfilled positive message expectation" do it "triggers a failure" do dbl = double expect(dbl).to receive(:foo), "dbl never calls :foo" end end
- When
-
I run
rspec example_spec.rb --format documentation
- Then
-
the output should contain:
1) An unfulfilled positive message expectation triggers a failure Failure/Error: expect(dbl).to receive(:foo), "dbl never calls :foo" dbl never calls :foo
- Failing negative message expectation with a custom failure message
-
- Given
-
a file named "example_spec.rb" with:
RSpec.describe "A negative message expectation" do it "fails when the message is received" do dbl = double expect(dbl).not_to receive(:foo), "dbl called :foo but is not supposed to" dbl.foo end end
- When
-
I run
rspec example_spec.rb --format documentation
- Then
-
the output should contain:
1) A negative message expectation fails when the message is received Failure/Error: dbl.foo dbl called :foo but is not supposed to
Last published 3 months ago by Jon Rowe.