[RUBY] [Rails] Test d'intégration avec Capybara (de l'introduction à l'exécution simple du test)

introduction

Un test d'intégration est un test qui confirme que l'application se comporte comme prévu. Vous pouvez le faire vous-même sur le navigateur, mais l'écriture du code de test a un gros avantage, donc je pense qu'il vaut mieux l'écrire si possible.

mérite ** ・ Une fois que vous avez écrit le code, vous pouvez facilement le tester ** (Si vous n'avez pas de code de test, vous devez remplir le formulaire et déplacer le lien à chaque fois.) ** ・ Vous pouvez organiser vos pensées ** En l'écrivant, vous pouvez visualiser objectivement vos pensées et faciliter la détection des omissions. ** ・ Peut être enregistré comme un enregistrement ** Vous pouvez voir à quel point vous vous attendez à ce que l'application fonctionne De plus, un tiers peut facilement vérifier le contenu du test.

Cette fois, je vais essayer de vérifier si l'opération de publication fonctionne comme le fichier GIF suivant. e02d69df1a47ecac2b896cfeb09626d2.gif

Présentation de Capybara

Tout d'abord, nous présenterons un joyau appelé Capybara.

Gemfile


group :test, :development do
  #(réduction)
  gem 'capybara'
end

Terminal


$ bundle install

spec/rails_helper.rb


#Ajout de la description suivante
require 'capybara/rspec'

Ensuite, préparez un fichier de travail. Créons le répertoire spec / features. Créez-y un fichier de test. Cette fois, c'est post_spec.rb.

Code de test

Je vais le décrire dans post_spec.rb.

spec/features/post_spec.rb


require 'rails_helper'

feature 'post', type: :feature do
  scenario 'Être capable de publier' do
    #Il y a un bouton de publication
    visit root_path
    expect(page).to have_content('Publier')

    #Travaux de post-traitement
    expect {
      click_link('Publier')
      expect(current_path).to eq new_post_path
      fill_in 'post_content', with: 'Bonjour'
      fill_in 'post_tags_attributes_0_content', with: 'marque'
      find('input[type="submit"]').click
    }.to change(Post, :count).by(1)

    #Redirigé vers la première page
    expect(current_path).to eq root_path

    #Le contenu publié est affiché sur la première page
    expect(page).to have_content('Bonjour')
  end
end

Décrivez une série d'opérations entre «senario do ~ end».

Cette fois, nous confirmons que le lien de publication est affiché, confirmons le processus de publication, confirmons la redirection et confirmons l'affichage du contenu publié dans l'ordre. Je n'expliquerai pas les détails de chaque processus tel que passer au chemin spécifié avec visite, remplir le formulaire avec fill_in, publier avec find ou cliquer, mais il sortira lorsque vous le vérifierez, alors voyons s'il y a un processus que vous voulez faire ..

Cette feuille de triche contient une liste de choses qui peuvent être utilisées avec capybara, vous pouvez donc vous y référer.

Essai

Il est bon d'exécuter le test en spécifiant le fichier comme suit.

Terminal


$ bundle exec rspec spec/features/post_spec.rb

Spécifiez le fichier que vous souhaitez exécuter selon les spécifications. Cette fois, j'ai écrit le code de test dans post_spec.rb dans le répertoire des fonctionnalités, il ressemble donc à ce qui précède.

Lançons-le.

12172459f80a1f0c542410796c6829fe.png S'il est affiché comme ci-dessus, il a été effacé avec succès.

Recommended Posts

[Rails] Test d'intégration avec Capybara (de l'introduction à l'exécution simple du test)
[Rails] De la préparation du test au test unitaire du modèle [RSpec]
Introduction à Micronaut 2 ~ Test unitaire ~
[Rails] Code de test à l'aide de Rspec
Erreur lors de l'utilisation des rails capybara
[Code de test d'intégration] Comment sélectionner un élément dans date_select
Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
Introduction à Ruby (à partir d'autres langues)
De l'introduction à l'utilisation de byebug
[Introduction aux rails] Comment utiliser le rendu
De la traction des rails image-docker au lancement
[Rails] Comment télécharger des images à l'aide de Carrierwave
Connectez-vous de Java à MySQL à l'aide d'Eclipse
[Rails] Assignation de variables du contrôleur à JavaScript
[Java] Flux du code source à l'exécution
Introduction à la surveillance à partir de Java Touching Prometheus
Pour implémenter la publication d'images à l'aide de rails
Comment résoudre les erreurs qui se produisent lors du test d'intégration "Ruby on Rails"
[Rails] Je veux tester avec RSpec. Nous soutenons votre démarche [Procédure d'introduction]