Aus der Fortsetzung des letzten Males. Enthält die zum Testen verwendeten RSpec und FactoryBot.
Gemfile
group :development, :test do
+ gem "rspec-rails"
+ gem "factory_bot_rails"
end
$ bundle
Nachdem es installiert wurde, initialisieren Sie es.
$ rails g rspec:install
...
Running via Spring preloader in process 6770
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Wenn in Zukunft ein Modell oder eine Steuerung generiert wird, steuert es die RSpec, die automatisch zusammen generiert wird. Ich werde nur das Modell verwenden und darum bitten, den Test auf ein Minimum zu beschränken. Setzen Sie also nichts anderes.
config/application.rb
class Application < Rails::Application
...
+ config.generators do |g|
+ g.test_framework :rspec,
+ view_specs: false,
+ helper_specs: false,
+ controller_specs: false,
+ routing_specs: false
+ end
end
...
Stellen Sie als Nächstes FactoryBot so ein, dass die Methode verwendet werden kann, ohne eine Klasse in RSpec zu schreiben.
spec/rails_helper.rb
RSpec.configure do |config|
+ config.include FactoryBot::Syntax::Methods
...
Referenz: Verfahren zum Installieren von Rspec und Factory_bot in der Rails-App
Führen Sie zu diesem Zeitpunkt rubocop aus, um den Fehler zu beseitigen. Wenn der Fehler Null wird, geben Sie git commit ein.
Beachten Sie, dass -a in rubocop -a
ein Befehl ist, der automatisch Dinge korrigiert, die automatisch korrigiert werden können. Wenn Sie also beim ersten Mal eine große Anzahl von Fehlern erhalten und diese erneut verschieben, sollte die Anzahl nach der automatischen Korrektur sofort abnehmen.
Die Vorbereitung war sehr lang, aber jetzt, da wir bereit sind, werden wir ein Modell machen.
$ rails g model Post subject:string body:text
Wenn Sie diesen Befehl ausführen, werden 4 Dateien mit Modell, Migration, Spezifikation und Factory_bot angezeigt. Wird generiert.
$ rails db:migrate
Wenn zur Laufzeit der folgende Fehler angezeigt wird, wird postgres gestoppt und gestartet.
rails aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql
...
$ sudo service postgresql95 start
Wenn Sie den Befehl Rails Console ausführen, kann pry mehr als nur Standard-IRB.
Gemfile
group :development, :test do
+ gem "pry-rails"
+ gem "pry-byebug"
...
end
$ bundle
Die Implementierung bis zur Steuerung und die Überprüfung des Vorgangs dauert einige Zeit. Versuchen Sie daher zu prüfen, ob das Modell mit der Rails-Konsole gespeichert und in die Datenbank geladen werden kann.
$ rails c
...
[1] pry(main)> Post.create!(subject: "hoge", body: "fuga")
[2] pry(main)> posts = Post.all
Post Load (0.6ms) SELECT "posts".* FROM "posts"
=> [#<Post:0x0000000006e89850
id: 1,
subject: "hoge",
body: "fuga",
created_at: Sat, 05 Sep 2020 13:50:01 UTC +00:00,
updated_at: Sat, 05 Sep 2020 13:50:01 UTC +00:00>]
Ich habe einen Beitrag in [1] gespeichert und alles in [2] erhalten. Anscheinend können Sie normal erstellen und lesen.
Recommended Posts