마이크 하얼의 튜토리얼 RSpec
을 따르려고합니다. 암호 재설정 통합 테스트에 도달했으며 지금까지 잘 수행하고있었습니다. 그럼 내가 말한 줄에있어 user = assigns(:user)
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 인스턴스 변수를 사용하고 있기 때문에 그럴 것이라고 생각합니다. 이게 중요합니까? 는'(@ valid_user.reset_token, 이메일을 : "") edit_password_reset_path를 얻을 는 redirect_to의 root_url '나는 ActionController 없음 경로가 일치라는 오류와 끝까지 .TO 내 ID는 무기 호입니다 (페이지) 기대합니다. – user12398736
PasswordResetsController 클래스에서'edit' 메서드를 정의하지 않았거나 컨트롤러의 redirect_to root_url이 누락되었다고 의심 되긴하지만 컨트롤러 코드를 보지 않고도 말하기는 어렵습니다. 자습서의 12.16 섹션에서 코드와 코드를 비교합니다. 도움이되지 않으면 컨트롤러 코드, 사양 코드 및 이미 시도한 몇 가지 사항을 포함하여 새로운 질문을 제출하십시오. https://stackoverflow.com/help/how-to-ask를 참조하십시오. – MothOnMars