私が使用しているテストは次のとおりです。
it { should have_link('Logout', href: logout_url) }
<a>
テキストとしてのタグの存在と、パスLogout
となるhrefの存在をテストしていlogout_url
ます。これに別の構文を使用する必要がありますか?
宝石:
rails 3.2.6
rspec-rails 2.10.1
capybara 1.1.2
私が使用しているテストは次のとおりです。
it { should have_link('Logout', href: logout_url) }
<a>
テキストとしてのタグの存在と、パスLogout
となるhrefの存在をテストしていlogout_url
ます。これに別の構文を使用する必要がありますか?
宝石:
rails 3.2.6
rspec-rails 2.10.1
capybara 1.1.2
これを行うにはいくつかの方法があります。カピバラdsl全体と、カピバラマッチャーなどの特定のセクションのいくつかに精通していることをお勧めします(まだの場合)。
私はあなたのテストが次のようにうまく書かれていると信じています:
it { should have_link('Logout', href: logout_url) }
リンクテキストが実際に「ログアウト」であり、hrefが正しく指定されている限り(以下を参照)。
capybara docsによると、最初のパラメータhave_link
はと呼ばれるものlocator
です。あなたの場合、それは「ログアウト」です。これは、リンク自体のテキストにすることも、dom要素の#idにすることもできます。したがって、あなたの場合、リンクを含むリンクに「ログアウト」というテキストを含める必要がありますlogout_url
。
カピバラのロケーターでは大文字と小文字が区別されるため、大文字と小文字が一致していることを確認してください。
また、を使用する必要があるかどうかを検討することもできlogout_url
ますlogout_path
。デフォルトでは、railsはほとんどのリンクの完全なURLを常に生成するとは限りません。パスを生成するだけです。違いは次のとおりです。
users_url: http://localhost/users
users_path: /users
ページをチェックして、これらのタイプのURLのどれがアプリによって生成されているかを確認してください。
おそらくlogout_pathである必要があります。
また、save_and_open_pageを使用して、何が問題になっているのかを理解することもできます。