Я пытаюсь понять, как писать тесты, но у меня много проблем, поскольку тесты никогда не подтверждают то, как я их хочу. В частности, я пытался использовать Factory Girl, а не светильники - как это было предложено недавними Railscasts и другими советами, которые я видел в сети - из-за преимуществ, которые он исповедует, и что это не сработало.
Например, вот простой тест Rspec для пользовательской модели, тестирование, чтобы убедиться, что имя пользователя присутствует...
describe User do
it "should not be valid without a username" do
user = FactoryGirl.create(:user, :username => "", :password => "secret")
user.should_not be_valid
end
end
И мой файл factories.rb, если он помогает...
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "registered-#{n}" }
password "foobar"
end
end
Когда я запускаю "rake spec", это говорит мне...
1) User should not be valid without a username
Failure/Error: user = FactoryGirl.create(:user, :username => "", :password => "secret")
ActiveRecord::RecordInvalid:
Validation failed: Username can't be blank
Уммм... что ТОЧКА. Если я указал, что пользователь НЕ должен быть действительным, не должен ли этот тест проходить?
Если я заменил строку Factory Girl и установил пользователь в тесте с чем-то вроде 'user = User.new(:username => "", :password => "secret")'
, неудивительно, что тест проходит нормально. Так почему же Factory Девушка не работает правильно?