2016-02-13 55 views
3

當我運行此RSpec示例時,它會通過,但我收到了棄用警告。如何解決有關新expect語法的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("[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 

這裏是輸出:

廢棄警告:

從rspec的期許老: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級)'

enter image description here

如何解決此警告?

更新:解決 我剛剛更換

page.should have_content 「確認密碼不匹配」

有:由於有消息說你

expect(page).to have_content "Confirm Password Does not Match" 
+1

這將是更好的在你的問題的身體進入預警的實際文本。使用Google進行閱讀和查找會更容易。 –

+0

做它說什麼? –

+0

我不想使用應該,因爲它是舊的語法,我正在尋找預期(頁面)語法。 – indb

回答

2

有兩種選擇:

  • 明確配置RSpec以允許.should。不要使用該選項; .should已棄用,未來可能不會得到支持。如果你真的想允許.should,不過,你可以通過添加這對您的spec_helper.rb(或編輯RSpec中,嘲笑的示例配置是可能已經存在)做到這一點:

    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 2Capybara's have_content matcher waits for you.

+0

是的,你的第二個選項回答了我的問題。謝謝。 – indb

4

我剛剛更換:

頁。應該have_content「確認密碼不匹配」

有:

expect(page).to have_content "Confirm Password Does not Match"