La fonction de la phrase d'exemple de test est écrite grossièrement de manière à être facile à retenir, nous ne garantissons donc pas qu'elle convient à la programmation.
Les références Ruby on Rails5 guide pratique d'apprentissage rapide qui peut être utilisé sur le terrain
Introduction à RSpec utilisable, partie 1 https://qiita.com/jnchito/items/42193d066bd61c740612
Créez un échafaudage de manière appropriée avec le générateur de rails
python
rails new plactice
python
rails db:create
python
rails g scaffold user name:string age:integer
python
rails db:migrate
python
rails s
Ceci termine la création du modèle. Créez user.rb dans le répertoire Model comme indiqué ci-dessous
model/user.rb
class User < ApplicationRecord
def initialize(name:, age:)
@name = name
@age = age
end
def alcol
if @age < 20
"Depuis que j'ai 20 ans"
else
"Saké modérément!"
end
end
end
Complet avec les gemmes et paramètres liés à RSpec.
describe Déclarez le regroupement de tests et décrivez les spécifications que vous essayez de tester.
décrire peut être imbriqué Sur le côté extérieur, décrivez le thème du fichier entier, et plus le nid est profond, plus le thème est fin.
python
RSpec.describe 'User' do
describe '#alcol_age' do
end
end
Ajoutez RSpec. À la description la plus externe.
context
La fonction est la même que describe (alias), mais la signification utilisée est différente. Il est utilisé lorsque vous souhaitez diviser les conditions de contenu de test pour chaque variation.
python
RSpec.describe 'User' do
describe '#alcol_age' do
context 'Si l'utilisateur a moins de 20 ans'do
end
context 'Si l'utilisateur a plus de 20 ans'do
end
end
end
it Décrivez le comportement attendu de la fonction sous forme de phrase. Écrivez une déclaration de test ici Et il est résumé dans une unité appelée exemple.
Si tous les chemins qu'il contient sont passés, cela signifie que l'exemple (test) est passé.
python
RSpec.describe 'User' do
describe '#alcol_age' do
context 'Si l'utilisateur a moins de 20 ans'do
it 'Attention Les commentaires sont affichés pour les moins de 20 ans' do
user = User.new(name: 'A', age: 18)
expect(user.alcol_age).to have_content 'Depuis que j'ai 20 ans'
end
end
context 'Si l'utilisateur a plus de 20 ans'do
it 'Remarque Le commentaire doit être affiché pour les personnes de plus de 20 ans.' do
user = User.new(name: 'A', age: 20)
expect(user.alcol_age).to have_content 'Saké modérément!'
end
end
end
end
before Si before est décrit dans describe ou context, le code écrit dans le bloc before est exécuté avant que le code de test dans cette zone ne soit exécuté. J'avais l'habitude de créer un utilisateur avec, mais l'écrire avant est plus facile à lire et peut être utilisé dans plusieurs conditions, de sorte que l'effet de le rendre DRY peut également être obtenu.
python
RSpec.describe 'User' do
describe '#alcol_age' do
context 'Si l'utilisateur a moins de 20 ans'do
it 'Attention Les commentaires sont affichés pour les moins de 20 ans' do
user = User.new(name: 'A', age: 18)
expect(user.alcol_age).to have_content 'Depuis que j'ai 20 ans'
end
end
context 'Si l'utilisateur a plus de 20 ans'do
it 'Remarque Le commentaire doit être affiché pour les personnes de plus de 20 ans.' do
user = User.new(name: 'B', age: 20)
expect(user.alcol_age).to have_content 'Saké modérément!'
end
end
end
end
before est exécuté à chaque fois qu'il est exécuté. L'état de la base de données sera restauré lors de sa prochaine exécution, il n'est donc pas fondamental qu'un autre scénario de test soit affecté par le scénario de test.
python
RSpec.describe 'User' do
describe '#alcol_age' do
before do
@params = {name: 'A', age: 18}
end
context 'Si l'utilisateur a moins de 20 ans'do
before do
@params.merge!(age: 18)
end
it 'Attention Les commentaires sont affichés pour les moins de 20 ans' do
user = User.new(@params)
expect(user.alcol_age).to have_content 'Depuis que j'ai 20 ans'
end
end
context 'Si l'utilisateur a plus de 20 ans'do
before do
@params.merge!(age: 20)
end
it 'Remarque Le commentaire doit être affiché pour les personnes de plus de 20 ans.' do
user = User.new(@params)
expect(user.alcol_age).to have_content 'Saké modérément!'
end
end
end
end
let Coches variables pouvant être utilisées dans les tests. Pas une variable, mais le comportement utilisé est proche d'une variable
python
let (Nom de la définition) {Contenu de la définition}
let est appelé la première fois que let est appelé. (Évaluation du retard) Soyez donc prudent car il ne sera peut-être jamais appelé.
python
RSpec.describe 'User' do
describe '#alcol_age' do
let(:user) {User.new(params)}
let(:params) {{name: 'A', age: age}}
context 'Si l'utilisateur a moins de 20 ans'do
let(:age) {18}
it 'Attention Les commentaires sont affichés pour les moins de 20 ans' do
expect(user.alcol_age).to have_content 'Depuis que j'ai 20 ans'
end
end
context 'Si l'utilisateur a plus de 20 ans'do
let(:age) {20}
it 'Remarque Le commentaire doit être affiché pour les personnes de plus de 20 ans.' do
expect(user.alcol_age).to have_content 'Saké modérément!'
end
end
end
end
C'est tout pour l'essentiel D'autres grammaires seront ajoutées séparément.
Si vous avez des questions, je vous serais reconnaissant de bien vouloir demander un professeur.
Recommended Posts