私は現在、Michael Hartl の RoR に関するチュートリアルをフォローしており、Rspec のテストにもっと慣れようとしています。何が起こっているかの大部分を追うことができますが、 :authenticate メソッドが何をどのように機能するかについて少し混乱しています:
it { should respond_to(:authenticate) }
そして、それがコードの次のセクションにどのように関連するか:
describe "return value of authenticate" do
before { @user.save }
let(:found_user) { User.find_by_email(@user.email) }
describe "with valid password" do
it { should == found_user.authenticate(@user.password) }
end
describe "with invalid password" do
let(:user_for_invalid_password) { found_user.authenticate("invalid") }
it { should_not == user_for_invalid_password }
specify { user_for_invalid_password.should be_false }
end
end
let と対応するブロックを使用した変数の割り当てを理解していますが、認証メソッドが呼び出されたときに何が起こっているのかを理解するのに苦労しています。最初の行で何に対して認証されていますか? 電子メールが存在する必要があり、特定の正規表現に一致することを必要とする user.rb モデルに対して認証を行っていますか、それとも何か他のものですか。わかりやすくするために、user.rb コードを含めました。
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
before_save { |user| user.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6 }
validates :password_confirmation, presence: true
end
どんな助けでも大歓迎です。