私は、レール3.1のsecure_passwordを使いこなしています。私はモデルrspecテストを書いていましたが、レール3.1のsecure_passwordによって提供される認証メソッドを呼び出す方法を理解できませんでした。Rails 3.1 secure_passwordとRspec
describe "authentication" do
before(:each) do
@user = User.create!(@attr)
end
....
describe "it should check credentials" do
describe "it should return false on an invalid password" do
@user.authenticate("wrongpass").should_be false
end
end
end
/ruby-1.9.3-p0/gems/activesupport-3.1.3/lib/active_support/whiny_nilを:私はここに私のユーザモデルに
をhas_secure_passwordを使用しています注意してください私のコンソールが私に与え最新のエラーです.rb:48:in method_missing': undefined method
nil:NilClass(NoMethodError)
こんにちはJames、答えてくれてありがとう!残念ながらそれはそれほどではありません。 githubリポジトリによれば、authenticateは認証に失敗した場合はfalseを返します。したがって、falseまたはbe_nilは両方とも動作するはずです。 @userがpassword_digestに応答していることを確認するテストも成功しています。私は見て、あなたに知らせ続けます。 – sybohy
「@userが応答する:password_digest」というテストでは、モデルのhas_secure_password行ではなく、dbスキーマの一部である属性がテストされていることに注意してください。 –