Erstellen einer Rails-API-Serverumgebung mit Docker-Compose Ich habe Gem in diesem Artikel nicht viel erwähnt, also fahren Sie fort
Installieren Sie den folgenden Edelstein.
...
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 Erforderlich bei Verwendung eines Postboten. Wenn Sie dies nicht tun, tritt ein CORS-Problem auf und ein Fehler tritt auf.
config > initializers > cors.rb Wenn Sie wie folgt schreiben, können Sie die API von überall aus aufrufen.
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 Es gibt eine Datei, die automatisch generiert wird, wenn Sie ein Modell oder einen Controller generieren. Es ist daher besser, sie im Voraus zu platzieren.
rspec-rails GitHub Rails 5 verwendet das System rspec-Rails 3. (4 ~ in Schienen 6)
Nach der Bundler-Installation die erste Datei unten? Installation
rails generate rspec:install
…
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Außerdem wurde Folgendes zu .rspec und application.rb hinzugefügt
Siehe Verfahren zum Installieren von Rspec und Factory_bot in der Rails-App
.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
Modelltests wurden automatisch generiert, Der Integrationstest wurde manuell zum Schreiben in Anforderungsspezifikation erstellt.
spec > requests > hoge_api_spec.rb Ich habe es so genannt.
Die Anforderungsspezifikation wurde mit der folgenden Konfiguration geschrieben
hoge_spec.rb
RSpec.describe 'HogeAPI' do
describe 'POST #create' do #Aktionsnamen anzeigen
context 'Wenn xxx' do #Bedingungen
before do
#Dummy-Daten vorbereiten
FactoryBot.create(:hoge)
...
end
it 'yy' do
expect do #Beim Erkennen einer Änderung in der 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) #Überprüfen Sie den Statuscode
end
end
[Rspec] Grundlagen des Rails-Modelltests [Rails] So schreiben Sie einen API-Test API mit RSpec testen Erstellen von Testdaten mit dem FactoryBot in Rails-Projekt
Da die Generatoren in application.rb einfach keine Controller-Testdatei generieren möchten, um einen Controller zu generieren, Siehe Everyday Rails-Einführung in den Rails-Test mit RSpec
application.rb
# NG
config.generators do |g|
g.test_framework :rspec,
controller_specs: false
Zuerst habe ich geschrieben, aber die Controller-Generierung war wie erwartet, aber aus irgendeinem Grund konnte die Modelltestdatei aufgrund eines Fehlers nicht generiert werden.
rubocop Da Rubocop auch beim Formatieren mit VS Code verwendet wird, habe ich es lokal installiert.
Es wird überprüft, ob die Datei korrekt geschrieben wurde.
//Wenn Sie überprüfen möchten
rubocop
//Wenn Sie es automatisch überprüfen und beheben können
rubocop -a
Es ist eine sehr Warnung. Überprüfen Sie daher den Inhalt der Warnung und setzen Sie sie so, dass sie überspringt, wenn sie nicht erforderlich ist.
Beispiel
.yml:.rubocop.yml
AllCops:
Exclude: #Geben Sie unter Ausschließen die Dateien an, die Sie ausschließen möchten.
- '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 ist eine Einstellung, die allen Warnungen gemeinsam ist
CORS für API in Rails festlegen Verwenden wir RuboCop mit Rails-Option und Lint-Option
Recommended Posts