我正在尝试使用RSpec
关注Mike Hartl的教程。我已经达到了密码重置集成测试,到目前为止,我做得很好。然后我到达了user = assigns(:user)
我搜索了答案,所以这是我的错误和错误。
失败:
passwordresets密码重置电子邮件输入有效电子邮件将密码和重定向重定向到root 失败/错误:期望(agisss(:user((。到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
我不确定该怎么办。
您的测试是错误的,因为您在测试中尚未定义user
变量。您已定义的 @valid_user
。我的猜测是,如果您更改,您的测试将通过: expect(assigns(:user)).to eq([user])
到 expect(assigns(:user)).to eq(@valid_user)