当我运行此RSpec示例时,它会通过,但我收到了弃用警告。
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("mymail@yopmail.com")
find("#passwordsignup").set("12345678")
find("#passwordsignup_confirm").set("")
find(".signin").click
sleep 2
page.should have_content "Confirm Password Does not Match"
end
end
这是输出:
弃用警告:
使用来自rspec-expectations'旧
should
语法的:should
而不使用 不推荐使用显式启用语法。使用新的:expect
语法或使用:should
显式启用config.expect_with(:rspec) { |c| c.syntax = :should }
。来自 /home/rails/rails_nimish/Devise_use/spec/features/users_spec.rb:113:in '阻止(4级)'
如何解决此警告?
更新:溶液 我刚换了
page.should have_content“确认密码不匹配”
使用:
expect(page).to have_content "Confirm Password Does not Match"
答案 0 :(得分:6)
正如消息所说,您有两种选择:
明确配置RSpec以允许.should
。不要使用该选项; .should
已被弃用,将来可能不会得到很好的支持。但是,如果您真的想要允许.should
,可以通过将其添加到spec_helper.rb(或编辑可能已经存在的rspec-mocks的示例配置)来实现:
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.syntax = :should
end
end
如果您想同时使用expect
和.should
,请设置
expectations.syntax = [:expect, :should]
但是不要这样做,选择一个并在测试套件中的任何地方使用它。
将您的期望重写为
expect(page).to have_content "Confirm Password Does not Match"
如果您有许多需要升级语法的规范,可以使用the transpec gem自动执行此操作。
旁注:在您的期望之前不要sleep 2
。 Capybara's have_content
matcher waits for you.
答案 1 :(得分:5)
我刚换了:
page.should have_content "Confirm Password Does not Match"
使用:
expect(page).to have_content "Confirm Password Does not Match"
答案 2 :(得分:0)
如果您决定清除旧语法,并且是vim类,则可能会发现以下方便;)
argdo %s/ \([^ ]\+\)\.should == \([^}]\+\)\( }\)\?$/ expect(\1).to eql(\2)\3/gc | update
argdo %s/should \(be_\w\+\)/expect(subject).to \1/gc | update