RSpec: ". not_to include" behaves like ".to exclude"
RSpec is smart when using the
include-matcher in combination with
.not_to. One could assume that
.not_to include(3, 4, 5)
NOT( .to include(3, 4, 5) )
However, it behaves like:
.to (NOT include(3) && NOT include(4) && NOT include(5) )
.not_toin combination with the
include-matcher doesn't logically negate the final truth value. It instead negates the individual include-expectations for each argument.
describe 'RSpec' do it "doesn't use logical negation for include, exhibit A" do expect([1, 2, 3]).to include(3, 4, 5) end it "doesn't use logical negation for include, exhibit B" do expect([1, 2, 3]).not_to include(3, 4, 5) end end
Exhibit A fails with:
expected [1, 2, 3] to include 4 and 5
Exhibit B fails with:
expected [1, 2, 3] not to include 3
This can be used to test for exclusion of multiple values all at once.
Your development team has a full backlog of feature requests, chores and refactoring coupled with deadlines? We are familiar with that. With our "DevOps as a Service" offering, we support developer teams with infrastructure and operations expertise.