[RUBY] Bonjour RSpec

Je suis un nouvel ingénieur Rails. J'ai appris RSpec en testant Rails, donc je l'ai résumé. Nous sérialisons un ingénieur qui deviendra un service dans 100 jours. Aujourd'hui est le 7ème jour Au fait, pour une comparaison entre Minitest et RSpec ici

Qu'est-ce que RSpec

Un framework qui utilise un langage spécifique au domaine (DSL) pour tester les classes et les méthodes créées dans Ruby et Ruby on Rails. En d'autres termes, il s'agit d'un langage de programmation de test uniquement.

FactoryBot Un bijou qui prend en charge la création de données de test FactoryBot facilite la préparation des données de test Il existe également un mécanisme appelé Fixture dans la norme Rails, Il est plus facile de saisir l'état des données et la relation entre les données qu'ici. Donc, cette fois, je l'utilise également.

Capybara Framework de test E2E (End-to-End) pour les applications Web. Il est utilisé en combinaison avec RSpec, etc. Vous pouvez simuler le fonctionnement du navigateur d'une application Web.

Forme de base de RSpec

La forme de base de la description RSpec est la suivante.

describe [Cible pour décrire la spécification(Cible de test)], type[type de spécification] do
  context[Une situation] do
    before do
      [Préparation préalable]
    end
    it[Contenu du cahier des charges (aperçu des attentes)] do
      [Comportement attendu]
    end
  end
end

C'est difficile à comprendre même si vous regardez ceci, alors je vais le diviser. describe

describe [Cible pour décrire la spécification(Cible de test)], type[type de spécification] do

end

Dans décrire, écrivez ce pour quoi vous essayez de décrire la spécification. Par exemple, si vous souhaitez écrire une spécification pour la fonction de test système et d'affichage de profil

describe 'Fonction d'affichage du profil', type: :system do

Voilà comment cela a été dit.

context Ceci permet de classer le contenu du test en fonction de la situation et de la variation de l'état. Par exemple, si l'entrée de l'utilisateur est correcte ou incorrecte, si l'utilisateur est connecté, etc. Je vais le décrire en contexte.

before avant d'écrire le code pour implémenter les prérequis pour toute la zone Voici les conditions préalables à l'affichage d'un profil. Dans ce cas, il est indispensable que vous soyez connecté

context 'Lorsque l'utilisateur est connecté' do
  before do
    visit login_path
    fill_in 'adresse mail', with: '[email protected]'
    fill_in 'mot de passe', with: 'password'
    click_button 'S'identifier'
  end
end

it Le dernier décrit le comportement attendu et le texte dans le code à l'intérieur du bloc expect(page).to have_content 'hoge' La description ci-dessus a le contenu "hoge" sur l'écran, non? ?? C'est le contenu. Puisqu'il est censé avoir du contenu, c'est jusque-là s'il reste en anglais.

#Sur l'écran de profil'Profil de l'utilisateur'Il y a du contenu??
it 'Le profil de l'utilisateur s'affiche' do
  expect(page).to have_content 'Profil de l'utilisateur'
end

Pour résumer ce qui précède


describe 'Fonction d'affichage du profil', type: :system do
  context 'Lorsque l'utilisateur est connecté' do
    before do
      visit login_path
      fill_in 'adresse mail', with: '[email protected]'
      fill_in 'mot de passe', with: 'password'
      click_button 'S'identifier'
    end
    it 'Le profil de l'utilisateur s'affiche' do
      expect(page).to have_content 'Profil de l'utilisateur'
    end
  end
end

La forme de base de RSpec est établie de cette manière. Il est difficile de tout comprendre soudainement, mais quand je le divise, cela semble tout à fait vrai.

Cette fois, je l'ai résumé en termes de comment voir la forme de base. Cela semble en fait plus imbriqué et compliqué, Tout d'abord, j'aimerais maintenir le formulaire de base et approfondir ma compréhension de RSpec.

C'est tout pour aujourd'hui ** 93 jours pour devenir un ingénieur à part entière **

Recommended Posts

Bonjour RSpec
Introduction de RSpec
Installation de RSpec
Configuration RSpec
Rspec, TDD (1)
Rspec introduction note_Rails
Java, bonjour le monde!
Java Hello World
Bonjour Java Lambda
Principes de base de Rspec [Rails]
[Rails5] Rspec -validation-