Veillez à ne pas dupliquer la console Web
Gemfile
gem 'rspec-rails'
group :development do
gem 'web-console'
end
Après bundle install
rails g rspec: install`
Modifiez le fichier .rspec pour l'afficher dans un format facile à lire comme suit:
.rspec
--format documentation
À ce stade, vérifions si RSpec fonctionne correctement.
bundle exec rspec
Terminal
Si cela fonctionne normalement, ce sera comme ça
No examples found.
Finished in 0.00031 seconds (files took 0.19956 seconds to load)
0 examples, 0 failures
.rspec spec spec/spec_helper.rb Comme rails_helper.rb, il s'agit d'un fichier qui écrit les paramètres communs pour RSpec, mais il est utilisé lors de l'utilisation de RSpec sans Rails.
spec/rails_helper.rb Il s'agit d'un fichier pour écrire les paramètres courants lors de l'utilisation de RSpec dans Rails. Appliquer les paramètres et méthodes courants en lisant ce fichier dans chaque fichier de test
Gemfile
group :development, :test do
#réduction
gem 'rspec-rails'
gem 'factory_bot_rails'
end
** Créer un fichier ** Créez un fichier Ruby avec le nom de fichier au pluriel de l'instance créée Créé cette fois pour qu'il devienne spec / factories / ʻusers.eb`.
** Modifier le fichier ** Facilitez la création d'une instance ou enregistrez-la dans la base de données par une méthode spécifique dans le fichier de spécifications
user.rb
FactoryBot.define do
factory :user do
nickname {"abe"}
email {"[email protected]"}
password {"00000000"}
password_confirmation {"00000000"}
end
end
** méthode de construction ** Créer une instance du nom de classe pris comme type de symbole comme argument basé sur la description de factory_bot
Exemple
#factory_Lorsque vous n'utilisez pas de bot
user = User.new(nickname: "abe", email: "[email protected]", password: "00000000", password_confirmation: "00000000")
#factory_Lors de l'utilisation du bot
user = FactoryBot.build(:user)
** méthode de création ** Cela fonctionne presque de la même manière que build, mais dans le cas de create, la valeur est enregistrée dans la base de données de test. Le test est exécuté une fois et le contenu du DB de test est annulé à chaque fois qu'il est terminé.
Exemple
#L'instance créée est enregistrée dans le DB
user = FactoryBot.create(:user)
Lors de la création d'une instance avec factory_bot, vous pouvez omettre la description de FactoryBot de la classe qui est le receveur.
rails_helper.rb
#réduction
RSpec.configure do |config|
#Ajout de la description suivante
config.include FactoryBot::Syntax::Methods
#réduction
end
Code de test du «modèle utilisateur»
** Création d'un fichier de spécifications **
Convention de dénomination de fichier nom de classe correspondant_spec.rb
Créez pour qu'il devienne spec / models / user_spec.rb.
user_spec.rb
require 'rails_helper'
describe User do
describe '#create' do
it "Impossible de s'inscrire sans pseudo" do
user = build(:user, nickname: "")
user.valid?
expect(user.errors[:nickname]).to include("can't be blank")
end
end
end
describe describe crée un ensemble de tests immédiatement après do ~ end. Dans le "" qui suit la description, écrivez une description du groupe.
** it et exemple ** il représente un ensemble de code de test fonctionnel appelé exemple. Écrivez une description de l'exemple dans le "" qui le suit.
** Attente ** C'est la formule qui est réellement évaluée. Écrivez entre les deux. Dans la formule ci-dessus, ʻattendre (user.errors [: nickname]). Inclure ("ne peut pas être vide") ʻest l'attente.
** Matcher ** Affiche les conditions dans lesquelles le test réussira dans l'attente.
valid? Cochez "Est-il dans un état où il ne peut pas être enregistré en raison de la validation?" La valeur de retour de la méthode est true / false
errors Si vous utilisez la méthode des erreurs pour une instance qui utilise la méthode valide?, Vérifiez pourquoi elle ne peut pas être enregistrée si elle ne peut pas être enregistrée en raison de la validation.
include Vous pouvez vérifier si la valeur prise comme argument est incluse dans le tableau qui est l'argument de expect Motif en double: a déjà été pris Motif vide: ne peut pas être vide Modèle de caractère insuffisant: est trop court Motif avec trop de caractères: est trop long
be_valid Il passe lorsque l'instance définie comme argument de expect efface toutes les validations. Exemple ci-dessous
sample_spec.rb
it "Peut être enregistré si le pseudo comporte 6 caractères ou moins" do
user = build(:user, nickname: "aaaaaa")
expect(user).to be_valid
end
eq S'ils sont égaux, ils réussiront. Exemple ci-dessous
sample_spec.rb
describe "sum" do
it "1 +1 devient 2" do
expect(1 + 1).to eq 2
end
end
Recommended Posts