私は以下のカピバラのテストケースを持っています。ログインページ認証のためのCapybaraテストケース
it "Testing login page with valid data" do
fill_in 'email', with: '[email protected]'
expect(page).to have_selector("input[value='[email protected]']")#Checking values are inserted in email field
fill_in 'password', with: 'Kiran.6565'
expect(page).to have_selector("input[value='Kiran.6565']")#Checking values are inserted in password field
click_button('submit')
expect(current_path).to eql(patient_detail_path(4))
end
メールアドレスとパスワードのフィールドが、それはidフィールドの値をpatient_details_pathにリダイレクトする必要があります一致している一度私は、ログインページをチェックしています。上記のコードでは、私は指定された電子メールとパスワードが手動ログインのために正常に動作していますが、問題はテストケースです。期待される結果:別のページ(patient_details_path)にリダイレクトするが、ホームページ(/)に再度リダイレクトする必要があります。
Failures:
1) Login Page Interface Test login page with valid data
Failure/Error: expect(current_path).to eql(patient_detail_path(4))
expected: "/patient_details/4"
got: "/"
(compared using eql?)
# ./spec/views/login_spec.rb:41:in `block (2 levels) in <top (required)>'
Finished in 1.08 seconds (files took 2.13 seconds to load)
14 examples, 1 failure
私は別の解決策をstackoverflowから試しましたが、何も私のために働きません。以下は、さまざまなソリューションを試してみました。
#expect(current_path).to eql(patient_detail_path(4))
#expect(page).to have_current_path(patient_detail_path(4))
電子メールとパスワードが一致しないと、エラーが発生し、再度ログインページにリダイレクトされます。私のシナリオでは、電子メールとパスワードが有効であってもエラーを投げていました。テストケースに以下のコードを追加すると、テストケースに合格します。
#expect(page).to have_content "Invalid username/password combination"
私はルビーとカピバラを初めて習っています。
カピバラのテストではなく、何とかしたらどうなりますか?あなたは結果を期待していますか? – meta
IDとパスワードを使用してユーザーを作成しているコードはどこにありますか?また、パスをテストするときには常に 'have_current_path'マッチャーを使用するべきです - あなたの現在のテストが不安定になる方法。また、これはビュー仕様ではないので、/ spec/views /にあるべきではありません。 –
@metaもしログインすれば手動で動作します。 –