Reputation: 1066
When I run this RSpec example, it passes but I'm getting a deprecation warning.
context "should have valid detail for signup" do
it "should give error for invalid confirm password" do
find("#usernamesignup").set("Any_name")
find("#mobile_number").set("1234567890")
find("#emailsignup").set("[email protected]")
find("#passwordsignup").set("12345678")
find("#passwordsignup_confirm").set("")
find(".signin").click
sleep 2
page.should have_content "Confirm Password Does not Match"
end
end
Here is the output:
Deprecation Warnings:
Using
should
from rspec-expectations' old:should
syntax without explicitly enabling the syntax is deprecated. Use the new:expect
syntax or explicitly enable:should
withconfig.expect_with(:rspec) { |c| c.syntax = :should }
instead. Called from /home/rails/rails_nimish/Devise_use/spec/features/users_spec.rb:113:in `block (4 levels) in '
How to resolve this warning?
Update:solution I just replaced
page.should have_content "Confirm Password Does not Match"
with:
expect(page).to have_content "Confirm Password Does not Match"
Upvotes: 12
Views: 7088
Reputation: 37607
As the message says, you have two options:
Explicitly configure RSpec to allow .should
. Don't use that option; .should
is deprecated and will likely not be as well supported in the future. If you really wanted to allow .should
, though, you could do it by adding this to your spec_helper.rb (or editing the example configuration of rspec-mocks that is probably already there):
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.syntax = :should
end
end
If you want to use both expect
and .should
, set
expectations.syntax = [:expect, :should]
But don't do that, pick one and use it everywhere in your test suite.
Rewrite your expectation to
expect(page).to have_content "Confirm Password Does not Match"
If you have many specs whose syntax needs upgrading, you can use the transpec gem to do it automatically.
Side note: Don't sleep 2
before your expectation. Capybara's have_content
matcher waits for you.
Upvotes: 16
Reputation: 9203
If you decide to clean out the old syntax and you're a vim kind, you may find the following handy ;)
argdo %s/ \([^ ]\+\)\.should == \([^}]\+\)\( }\)\?$/ expect(\1).to eql(\2)\3/gc | update
argdo %s/should \(be_\w\+\)/expect(subject).to \1/gc | update
Upvotes: 0
Reputation: 1066
I just replaced:
page.should have_content "Confirm Password Does not Match"
with:
expect(page).to have_content "Confirm Password Does not Match"
Upvotes: 6