Soyez assuré que tous les tests ont été réussis avec RSpec! Quand je le pousse et que je vois le résultat du test de CircleCI,
** Gyaaaa! !! De nombreux tests ont échoué! !! ** **
Voici une partie de la déclaration d'erreur
Error!
ActiveRecord::RecordInvalid:Validation failed: Email has already been taken
Il est probable que la validation a échoué dans le deuxième test CircleCI et qu'une erreur s'est produite car les données de test n'ont pas été supprimées (annulées) et sont restées lorsque l'exécution du premier test s'est terminée. En d'autres termes, l'adresse e-mail était déjà enregistrée, donc lorsque j'ai exécuté le deuxième test, les données de test n'ont pas pu être générées et cela a échoué.
S'il s'agit d'une spécification de fonctionnalité, vous pouvez résoudre ce problème en insérant une gemme appelée database_cleaner. Si vous insérez cette gemme, elle annulera la base de données à la fin du test.
Cependant, le test que j'ai fait concerne les spécifications du système. Les spécifications système ont été introduites à partir de RSpec 3.7 et restaurent le DB de données de test par défaut. database_cleaner n'est pas requis.
Mais pourquoi n'a-t-il pas été reculé ... J'étais perdu ...
Cela a été fait en un instant.
rails_helper.rb
RSpec.configure do |config|
config.use_transactional_fixtures = true
#↑ Cette phrase était fausse
~ (Omis) ~
end
Le paramètre d'annulation de la transaction était faux. Lorsque j'utilisais les spécifications des fonctionnalités, je définissais ceci sur false lors de l'installation du gem database_cleaner, j'ai donc exécuté les spécifications système avec ce paramètre.
Le simple fait de définir cette modification sur true ne fera que restaurer la base de données, et le test échouera également car les données de test actuelles restent toujours. Après cela, vous devez réinitialiser les données de base de données dans l'environnement de test. ..
docker-compose run app rails db:migrate:reset RAILS_ENV=test
Après cela, le test a réussi.
Sort un apprentissage quotidien! !! Nous sommes impatients de vous aider même un peu! De plus, si vous avez des suggestions ou des impressions, je vous serais reconnaissant de bien vouloir commenter!