Проверка правильности длины пароля с помощью RSpec
Я пишу некоторые модульные тесты, чтобы гарантировать, что модель User не может иметь пароль длиной менее 8 символов.
Я начал с модели пользователя:
class User < ActiveRecord::Base
...
validates :password, :length =>{
:minimum => 90,
:too_short => "password is too short, must be at least %{count} characters"
}, :on => :create
end
И тест user_spec.rb:
describe User do
subject { FactoryGirl.build :user }
its(:password) { should have_at_least(8).items }
end
Однако я понял, что это на самом деле не проверяет мою проверку, а просто проверяет, что у моей фабрики был пароль> = 8 символов.
Есть ли хороший способ сделать это, кроме проверки действительного? метод для паролей 0-7 символов?
Моя теория состоит в том, что если я проверю только 7 символов и кто-то случайно жестко закодирует, что 4-символьные пароли в порядке, это пройдет проверку, но на самом деле это не то, что предполагалось. Может быть еще какой-то код, в котором это зависит от того, что пароль состоит из более чем 8 символов (маловероятно, но в других ситуациях может быть правдой), и поэтому допустимо вводить пароль из 4 символов.
В этом случае человек, который изменил проверку пароля в модели, не будет знать, что он сделал что-то не так.
Я просто хотел бы знать, как правильно тестировать подобные ситуации с помощью TDD.