私はRSpec
でMike Hartlのチュートリアルに従おうとしています。私はパスワードリセット統合テストに達しましたが、これまではうまくいっていました。その後、私は言った行になったRspecエラーを割り当てよう
私はここに私が持っているものと私のエラーが検索されました。
障害:
PasswordResets Password resets email input valid email sends password and redirects to root Failure/Error: expect(assigns(:user)).to eq([user])
NameError:
undefined local variable or method `user' for #<RSpec::ExampleGroups::PasswordResets::PasswordResets::EmailInput:0x007fc5d16b0ca8>
# ./spec/requests/password_resets_spec.rb:26:in `block (4 levels) in <top (required)>'
require 'rails_helper'
RSpec.describe "PasswordResets", type: :request do
describe "Password resets" do
before do
ActionMailer::Base.deliveries.clear
@valid_user = create(:user)
end
describe "unsuccessful password reset" do
it "flashes danger when email is blank" do
get new_password_reset_path(@valid_user.id)
post password_resets_path, params: { password_reset: { email: " " } }
expect(flash[:danger]).to be_present
expect(page).to render_template(:new)
end
end
describe "email input" do
it "valid email sends password and redirects to root" do
post password_resets_path, params: { password_reset: { email: @valid_user.email } }
expect(@valid_user.reset_digest).not_to match (@valid_user.reload.reset_digest)
expect(ActionMailer::Base.deliveries.size).to eq(1)
expect(flash[:info]).to be_present
expect(page).to redirect_to root_url
expect(assigns(:user)).to eq([user])
end
end
end
end`
私は私が行うには他に何かわからないhttps://www.railstutorial.org/book/password_reset 12.18
を以下のよチュートリアル。
を、これは働いていた、ありがとうございます。チュートリアルで既に定義したユーザーを参照していたことはわかりませんでした。チュートリアルを続けると – user12398736
になります。 次の行も失敗しますが、私はそれが単なるユーザーの代わりにインスタンス変数@valid_userを使用しているためだと思います。これは問題ですか? 'edit_password_reset_pathを取得(valid_user.reset_token @、電子メール:"「) (ページ).TO redirect_to root_urlを期待する」 私はActionController NOルートが一致し、私のidがnilであるというエラーになってしまいます。 – user12398736
PasswordResetsControllerクラスの 'edit'メソッドが定義されていないか、コントローラーのどこかに' redirect_to root_url'がありませんが、コントローラーコードを見ずに言うのは難しいと思います。私はチュートリアルの12.16セクションのコードとあなたのコードをチェックします。それでも問題が解決しない場合は、コントローラコード、スペックコード、すでに試したことを含む新しい質問を提出してください。 https://stackoverflow.com/help/how-to-askを参照してください。 – MothOnMars