Проверка правильности длины пароля с помощью 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.

Ответы на вопрос(2)

Ваш ответ на вопрос