나는 다음과 같은 단위 테스트를 실행하기 위해 노력하고있어 업데이트되지 않습니다레일 단위 테스트는 데이터베이스
<#<Usuario ID: 1000003, login: "longbob", hashed_password: "078cf6ae2de80ed6c004c8c8576a5572e077a52c", salt: "1000", nombre: nil, apellido: nil, email: "[email protected]", telefono: nil, tipo_usuario: nil, foto: nil, bol_activo: nil>> expected but was <nil>.
가 여기 내을 인증 방법입니다 :
:def self.authenticate (login, pass)
u=find(:first, :conditions=>["login = ?", login])
return nil if u.nil?
return u if Usuario.encrypt(pass, u.salt)==u.hashed_password
nil
end
또한, 나는 다음과 같은 정의
def password=(pass)
@password=pass
self.salt = Usuario.random_string(10) if !self.salt?
self.hashed_password = Usuario.encrypt(@password, self.salt)
end
그래서 "암호"를 할당 할 때마다 hashed_password를 업데이트해야한다고 생각합니다 ... 맞습니까?
무슨 일입니까?
Thx.
는 UPDATE :
그것은 그 테스트를 통과assert_equal @longbob, Usuario.autenticar("longbob", "nonbobpasswd")
assert_equal @longbob2, Usuario.autenticar("longbob", "nonbobpasswd")
에, 그러나 그것은 같은 Trowing ... 다음 줄에 실패은 내가 변경하는 경우 것으로 나타났습니다 오류 ... 그게 뭐야?
'Usuario'는'User'에 대한 타이핑 오류입니까? 아니면 실제로 두 개의 다른 클래스를 사용합니까? 그렇다면'authenticate' 두 가지 메소드의 소스 코드를 제공해 주시겠습니까? –
유형은 ...이미 수정 됨 – tiiin4
'@ longbob.save'가 레코드를 업데이트했는지 확인 했습니까? 저장 후 'assert_nil Usuario.authenticate ("longbob", "longtest")와 같은 테스트를 추가 할 수 있습니다. –