je le test suivant:Validations Parce test pour échouer
test "should get create" do
sign_in(FactoryGirl.create(:user))
assert_difference('Inquery.count') do
post :create, FactoryGirl.build(:inquery)
end
assert_not_nil assigns(:inquery)
assert_response :redirect
end
et je continue à obtenir:
2) Error:
test_should_get_create(InqueriesControllerTest):
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken, License number has already been taken
Ce que je ne comprends pas pourquoi je reçois cette erreur dans ce test particulier, quand j'ai un test très similaire:
test "should get create" do
sign_in(FactoryGirl.create(:user, admin: true))
assert_difference('Event.count') do
post :create, FactoryGirl.build(:event)
end
assert_not_nil assigns(:event)
assert_response :success
end
et cela ne fait que très bien. La différence évidente est la ligne admin: true, mais cela n'a aucun effet comme je le soupçonnais.
Ajouté:
User_factory.rb
factory :user do
first_name "John"
last_name "Doe"
email "[email protected]"
password "foobar"
password_confirmation "foobar"
license_number '12345'
state 'AZ'
specialty 'Neurosurgery'
end
quel ordre les tests exécutés en? A quoi ressemble l'usine pour l'utilisateur? – girasquid
Usine supplémentaire ajoutée. Les tests sont exécutés dans l'ordre standard des rails: Index, Afficher, Nouveau, Modifier ... –
Vous avez déjà créé un utilisateur avec cet e-mail. Y a-t-il d'autres objets utilisateur créés avant celui-ci qui persistent? Êtes-vous sûr de courir dans l'environnement de test? Êtes-vous sûr que l'environnement de test est nettoyé avant chaque exécution? – MrDanA