我正在使用的测试应用程序具有标准session[:user_id]=user.id
样式身份验证。我使用Fabricator来测试会话哈希的user.id
赋值。当我使用Fabricator时,user.authenticate
方法失败,但是当我手动传入凭证而不使用Fabricator时,测试成功通过。
我已将binding.pry
放入会话控制器的创建操作中,当我打电话给他时,我绝对可以同时访问电子邮件和密码,但是"验证&# 34;功能确实失败了。这是为什么?
测试:
it "assigns user.id to session hash" do
johndoe=Fabricate(:user)
puts johndoe.email
puts johndoe.password
post :create, email: johndoe.email, password: johndoe.password
expect(session[:user_id]).to eq(april.id)
end
控制器:
def create
binding.pry
user=User.find_by(email:params["email"])
if user && user.authenticate(params[params["password"]])
session[:user_id]=user.id
flash[:success]="You have successfully signed in."
redirect_to videos_path
else
flash[:danger]="There was something wrong with your email address or password."
render 'new'
end
end
答案 0 :(得分:0)
你有params[params["password"]]
。试试params["password"]
。