Testowanie sprawdzania długości hasła za pomocą RSpec
Piszę testy jednostkowe, aby upewnić się, że model użytkownika nie może mieć hasła o długości <8 znaków.
Zacząłem od modelu użytkownika:
class User < ActiveRecord::Base
...
validates :password, :length =>{
:minimum => 90,
:too_short => "password is too short, must be at least %{count} characters"
}, :on => :create
end
I test user_spec.rb:
describe User do
subject { FactoryGirl.build :user }
its(:password) { should have_at_least(8).items }
end
Jednak zdałem sobie sprawę, że to nie testuje mojej walidacji, tylko sprawdza, czy moja fabryka ma hasło> = 8 znaków.
Czy jest dobry sposób na wykonanie tego innego niż testowanie poprawnego? metoda haseł 0-7 znaków?
Moja teoria jest taka, że jeśli testuję tylko 7 znaków i przypadkowo twarde kody, które są 4-znakowe, są OK, to przejdzie walidację, ale tak naprawdę nie jest zamierzone. Może istnieć inny kod, w którym zależy od hasła składającego się z więcej niż 8 znaków (mało prawdopodobne, ale w innych sytuacjach może być prawdą), a więc dopuszczenie hasła 4 jest nieprawidłowe.
W tym przypadku osoba, która zmieniła weryfikację hasła w modelu, nie będzie wiedziała, że zrobiła coś złego.
Chciałbym tylko wiedzieć, jak poprawnie testować takie sytuacje w TDD.