Я нахожусь в процессе изучения Ruby on Rails, поэтому относитесь ко мне как к неофиту, потому что я.
У меня есть модель User с некоторыми связанными тестами RSpec и следующий тесттерпит неудачу:
require 'spec_helper'
describe User do
it 'should require a password' do
User.new({:email => 'valid_email@example.com', :password => '', :password_confirmation => ''}).should_not be_valid
end
end
Соответствующая часть модели User
выглядит следующим образом:
class User < ActiveRecord::Base
...
validates :password, :presence => true,
:confirmation => true,
:length => { :minimum => 6 }
...
end
Вот подвох: если я запускаю User.new(...).valid?
из консоли Rails, используя аргументывыше, он возвращает false, как и ожидалось, и показывает правильные ошибки (пароль пуст).
Я использовал spork / autotest и перезапустил оба безрезультатно, но этот тест также не проходит, даже если он запускался напрямую с rspec
.Что я здесь не так делаю?
РЕДАКТИРОВАТЬ
Я попробовал еще несколько вещей с тестом.Это терпит неудачу:
u = User.new({:email => 'valid_email@example.com', :password => '', :password_confirmation => ''})
u.should_not be_valid
Так же это:
u = User.new({:email => 'valid_email@example.com', :password => '', :password_confirmation => ''})
u.valid?
u.errors.should_not be_empty
Это проходит, подтверждая, что :password
действительно пуст:
u = User.new({:email => 'valid_email@example.com', :password => '', :password_confirmation => ''})
u.password.should == ''