Création d'un environnement de serveur API Rails à l'aide de docker-compose Je n'ai pas beaucoup mentionné Gem dans cet article, alors continuez
Installez la gemme suivante.
...
gem 'rack-cors'
group :development, :test do
...
gem 'rspec-rails', '~> 3.9'
gem 'factory_bot_rails'
end
group :development do
...
gem 'rubocop', require: false
end
rack-cors Requis lors de l'utilisation du facteur. Si vous ne le faites pas, un problème CORS se produira et une erreur se produira.
config > initializers > cors.rb Si vous écrivez comme suit, vous pouvez accéder à l'API de n'importe où.
cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: %i[get post put patch delete options head]
end
end
rspec-rails, factory_bot_rails Il existe un fichier qui est généré automatiquement lorsque vous générez un modèle ou un contrôleur, il est donc préférable de le mettre à l'avance.
rspec-rails GitHub Rails 5 utilise le système rspec-rails 3. (4 ~ dans les rails 6)
Après l'installation du bundler, le fichier initial ci-dessous? Installation
rails generate rspec:install
…
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Ajout des éléments suivants à .rspec et application.rb
Voir Procédure d'installation de Rspec et Factory_bot dans l'application Rails
.rspec:.rspec
--color
--require rails_helper
--format documentation
application.rb
config.generators do |g|
g.test_framework :rspec,
view_specs: false,
helper_specs: false,
controller_specs: false,
routing_specs: false
Les tests de modèles ont été générés automatiquement, Le test d'intégration a été créé manuellement pour être écrit dans Request spec.
spec > requests > hoge_api_spec.rb Je l'ai nommé comme ça.
La spécification de la demande a été écrite avec la configuration suivante
hoge_spec.rb
RSpec.describe 'HogeAPI' do
describe 'POST #create' do #Afficher le nom de l'action
context 'Si xxx' do #conditions
before do
#Préparer des données factices
FactoryBot.create(:hoge)
...
end
it 'yy' do
expect do #Lors de la détection d'un changement de DB
post '/hoge/create', params: { name: "Hoge" }
end.to change(Hoge, :count).by(+1) and change(Table2, :count).by(0)
expect(response.status).to eq(201) #Vérifiez le code d'état
end
end
[Rspec] Principes de base du test du modèle Rails [Rails] Comment écrire un test d'API Test de l'API à l'aide de RSpec Comment créer des données de test à l'aide du projet FactoryBot in Rails
Étant donné que les générateurs de application.rb ne veulent tout simplement pas générer un fichier de test de contrôleur pour générer un contrôleur, Reportez-vous à Everyday Rails-Introduction to Rails Test with RSpec
application.rb
# NG
config.generators do |g|
g.test_framework :rspec,
controller_specs: false
Au début, j'ai écrit, mais la génération du contrôleur était comme prévu, mais pour une raison quelconque, le fichier de test du modèle n'a pas pu être généré en raison d'une erreur.
rubocop Puisque rubocop est également utilisé lors du formatage avec VS Code, je l'ai installé localement.
Il vérifiera si le fichier est écrit correctement.
//Quand vous voulez vérifier
rubocop
//Quand vous pouvez le vérifier et le réparer automatiquement
rubocop -a
C'est un très avertissement, alors vérifiez le contenu de l'avertissement et configurez-le pour ignorer s'il n'est pas nécessaire.
Exemple
.yml:.rubocop.yml
AllCops:
Exclude: #Spécifiez les fichiers que vous souhaitez exclure dans Exclure.
- 'spec/*.rb'
- 'db/schema.rb'
- 'test/*'
- 'config/**/*'
- 'Gemfile'
- 'bin/*'
Style/FrozenStringLiteralComment:
Enabled: false
Style/Documentation:
Enabled: false
Style/StringLiterals:
Enabled: false
Metrics/BlockLength:
Exclude:
- 'spec/**/*'
Metrics/MethodLength:
Max: 30
Metrics/AbcSize:
Max: 30
Style/AsciiComments:
Enabled: false
AllCops est un paramètre commun à tous les avertissements
Définir CORS pour l'API dans Rails Utilisons RuboCop avec l'option Rails et l'option Lint
Recommended Posts