There is a subtle difference between the expect
that is used to validate an output against the expect
that is used to validate that a block of code does raise an error
When asserting that an output is correct use:
expect(cart).to be_empty
When expecting a block of code to raise an error:
expect{cart.add_item("fake-sku")}.to raise_error