J'ai essayé de résumer comment écrire du code de test dans Rspec. (Ce sera un test de réponse.)
J'ai appris en me référant aux articles suivants. Créer un modèle pour les paramètres RSpec initiaux dans Rails-Qiita Tutoriel Test Rails (Chapitre 3, Chapitre 4, Chapitre 5) avec RSpec-Qiita
Ajout de Rspec au gemfile
gemfile
group :development, :test do
gem 'rspec-rails', '~> 4.0.1'
end
Ensuite, installez Gem.
$ bundle install
Installez rspec dans votre projet avec la commande rails.
$ rails generate rspec:install
.rspec
--require rails_helper
--format documentation
config/application.rb
module RailsTutorial
class Application < Rails::Application
config.load_defaults 5.2
#↓ Ajouter
#Rails g en spécifiant rspec pour le framework de test~Paramètre pour créer automatiquement un fichier de spécifications lorsque
config.generators do |g|
g.test_framework :rspec,
helper_specs: false,
routing_specs: false,
view_specs: false,
controller_specs: false
end
#↑ Ajouter
end
end
Il semble que le code de test s'appelle 'spec'in Rspec. (Le code de test du contrôleur semble être comme "spécification du contrôleur".)
Pour les rails, vous pouvez créer un fichier avec la commande rails generate.
#Pour contrôleur
$ rails g rspec:nom de fichier du contrôleur
#Pour modèle
$ rails g rspec:nom de fichier du modèle
$ rails g rspec:controller StaticPages
spec/requests/static_pages_request_spec.rb
require 'rails_helper'
RSpec.describe 'Access to static_pages', type: :request do
#Demander l'envoi du test à la page d'accueil
context 'GET #home' do
before { get static_pages_home_path }
#Test de réponse à la demande
it 'responds successfully' do
expect(response).to have_http_status 200
end
end
end
Je ne suis pas sûr de la description ou du contexte.
Regardons chacun d'eux.
・ Décrivez, tapez
_spec.rb
RSpec.describe 'Access to static_pages', type: :request do
end
↓
RSpec.describe [Nom du test], type: [Type de spécification] do
end
#Type de spécification
#Cette fois, c'est un test de réponse, donc ce sera une requête.
#Autre que ça'system','controller','model','routing','view'Etc.
・ Contexte, avant, il
_spec.rb
RSpec.describe 'Access to static_pages', type: :request do
context 'GET #home' do
before { get static_pages_home_path }
#Test de réponse à la demande
it 'responds successfully' do
expect(response).to have_http_status 200
end
end
end
↓
RSpec.describe 'Access to static_pages', type: :request do
context ['~dans le cas de'(Avec ton nom préféré)] do
before [Préparation préalable]
#Test de réponse à la demande
it ['Contenu des spécifications'(Avec ton nom préféré)] do
[Comportement attendu]
end
end
end
Si vous lisez dans l'ordre du haut Le code de test y est enfin répertorié. Le code de test est écrit dans une structure qui en imbrique beaucoup décrivent> contexte> ....
spec/requests/static_pages_request_spec.rb
require 'rails_helper'
RSpec.describe 'Access to static_pages', type: :request do
#Demander l'envoi du test à la page d'accueil
context 'GET #home' do
before { get static_pages_home_path }
#Test de réponse à la demande
it 'responds successfully' do
expect(response).to have_http_status 200
end
end
end
expect(response).to have_http_status 200
C'est avant et {get static_pages_home_path}
Lorsque la méthode GET est utilisée pour communiquer avec le chemin d'accès d'origine, si la réponse renvoyée est 200 (OK), cela signifie que le test est OK.
C'est facile, mais il s'agit d'écrire un test de réponse Rspec dans Rails.
Recommended Posts