Я пытался понять, как писать тесты, но у меня много проблем, потому что тесты никогда не подтверждают то, что я хочу.В частности, я пытался использовать 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 Girl не работает правильно?