Sto scrivendo alcuni test di unità per garantire che un modello Utente non possa avere una password < di 8 caratteri.Verifica della convalida della lunghezza della password con RSpec
Ho iniziato con un modello User:
class User < ActiveRecord::Base
...
validates :password, :length =>{
:minimum => 90,
:too_short => "password is too short, must be at least %{count} characters"
}, :on => :create
end
E un test user_spec.rb:
describe User do
subject { FactoryGirl.build :user }
its(:password) { should have_at_least(8).items }
end
Comunque ho capito che questo in realtà non prova la mia convalida, solo alla prova che il mio la fabbrica aveva una password> = 8 caratteri.
Esiste un modo valido per eseguire questa operazione oltre a quella valida? metodo per password 0-7 caratteri?
La mia teoria è che se provo solo per 7 caratteri e qualcuno accidentalmente i codici hard che le password di 4 caratteri sono OK questo passerebbe la convalida ma non è realmente ciò che era inteso. Potrebbe esserci del codice diverso da quello in cui una password è composta da più di 8 caratteri (non probabile ma in altre situazioni potrebbe essere vera) e quindi consentire una password di 4 non è corretta.
In questo caso la persona che ha modificato la convalida della password nel modello non saprà che ha fatto qualcosa di sbagliato.
Vorrei solo sapere come testare correttamente situazioni come questa con TDD.
non capisco il problema .. – apneadiving