у меня проблема с автотестом. В моей пользовательской модели имя пользователя и адрес электронной почты уникальны. Когда я запускаю автотест, все работает нормально. Во втором туре из автотеста у меня
Ошибка проверки: электронная почта уже занята, имя пользователя уже занято
ошибка только в двух тестах. Я не понимаю, почему, я использую factorygirl с последовательностью, и это должно генерировать каждый раз новое имя пользователя.
Это мой файл rspec2:
describe User do
specify { Factory.build(:user).should be_valid }
context "unique values" do
before :all do
@user = Factory.create(:user)
end
it "should have an unique email address" do
Factory.build(:user, :email => @user.email).should_not be_valid
end
it "should have an unique username" do
Factory.build(:user, :username => @user.username).should_not be_valid
end
end
context "required attributes" do
it "should be invalid without an email address" do
Factory.build(:user, :email => nil).should_not be_valid
end
it "should be invalid without an username" do
Factory.build(:user, :username => nil).should_not be_valid
end
it "should be invalid without an password" do
Factory.build(:user, :password => nil).should_not be_valid
end
it "should be invalid without an address" do
Factory.build(:user, :address => nil).should_not be_valid
end
end
end
Фабрика:
Factory.sequence :username do |n|
"Outfit#{n}er"
end
Factory.sequence :email do |n|
"user#{n}@example.com"
end
Factory.define :user do |u|
u.username { Factory.next :username }
u.email { Factory.next :email }
u.password 'secret'
u.phone_number '02214565854'
u.association :address, :factory => :address
end
Factory.define :confirmed_user, :parent => :user do |u|
u.after_build { |user| user.confirm! }
end
Единственные два теста, которые не работают, находятся в контексте «уникальных значений». Все остальные тесты работают без ошибок.
Спасибо