2015-08-15 52 views
0

rspec的更新到3.3.3後,我得到了很多廢棄警告的..應該和should_not在rspec的3+

should我從改變:

describe "visiting the user index" do 
     before {visit users_path} 
     scenario{ should have_title('Sign in')} 
    end 

到:

describe "visiting the user index" do 
     before {visit users_path} 
     scenario{ expect have_title('Sign in')} 
    end 

我希望我的重構是可以的。

我得到了棄用警告shuold_not,其中expect_not不起作用。在網絡上,我一直到this頁面,但我無法理解should_not resplacment中的想法。

反正這個例子中棄用:

describe "visiting Users#edit page" do 
    before { visit edit_user_path(wrong_user)} 
    scenario{ should_not have_title('Edit user')} 
    end 

,這是否獲得一個未定義的方法錯誤:

describe "visiting Users#edit page" do 
    before { visit edit_user_path(wrong_user)} 
    scenario{ expect_not have_title('Edit user')} 
    end 
+0

嘗試'expect(page).not_to have_title('Edit user')'。 –

+0

rspec返回:'Capybara :: RSpecMatchers :: HaveTitle實現傳統的RSpec匹配器 協議。對於當前的協議,您應該通過'failure_message'和'failure_message_when_negated'方法公開失敗消息 。' – Nir

+0

是的,這是一個水豚問題。你需要更新你的水豚版本。 –

回答

0

您可以使用is_expected.not_to,如果你定義了一個主題,或者更長的版本expect(page).not_to

describe "visiting Users#edit page" do 
    before { visit edit_user_path(wrong_user)} 
    scenario{ is_expected.not_to have_title('Edit user')} 
end 

看看expect VS should section在betterspecs。

+0

看到我的評論@Abraar Arique – Nir

+0

這實際上是另一個問題。看看水豚問題,它似乎在版本> 2.3處理。你有哪種版本的水豚?你能更新它嗎? – dgilperez

+0

So @nir,它有幫助嗎? – dgilperez