2016-08-09 10 views
1

私は、単純なスペック書いた:RSpecはチェックポート番号を無視できますか?

visit root_url 
click_button 'Sign in' 

expect(current_url).to eq user_sign_in_url 

と、この仕様を実行し、それは次の理由で失敗します。

expected: "http://example.com/users/sign_in" 
    got: "http://example.com:12345/users/sign_in" 

この場合にはRSpecのポート番号をチェックするのはなぜ?
RSpecはこれをチェックするのを無視できますか?どんな助けにも感謝します。

+2

'current_path'を使用できますか?例: 'expect(current_path).to eq user_sign_in_path' –

+0

あなたはカピバラを使っていますか? 'Capybara.server_port'は12345に設定されていますか? –

答えて

0

current_urlではなく、current_pathのメソッドを使用する必要があります。これは、2番目のメソッドがURL全体を返すためです。別のことは、文字列をアサートしていることです(current_urlが文字列に等しくなることが期待されます)。これは、ほとんどの場合、完全に大丈夫ですが、より安全な方法は、このようなhave_current_pathを使用することです:

expect(page).to have_current_path(...) 

それはclick_buttonのような先行するすべてのアクションを完了することを保証します。

関連する問題