0

私が使用しているテストは次のとおりです。

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
4

2 に答える 2

1

これを行うにはいくつかの方法があります。カピバラ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のどれがアプリによって生成されているかを確認してください。

于 2012-06-29T04:25:29.537 に答える
0

おそらくlogout_pathである必要があります。

また、save_and_open_pageを使用して、何が問題になっているのかを理解することもできます。

于 2012-06-28T19:51:04.110 に答える