De la suite de la dernière fois. Contient le RSpec et le FactoryBot utilisés pour les tests.
Gemfile
group :development, :test do
+ gem "rspec-rails"
+ gem "factory_bot_rails"
end
$ bundle
Maintenant qu'il est installé, initialisez-le.
$ 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
Il contrôle le RSpec qui est automatiquement généré lorsqu'un modèle ou un contrôleur est généré à l'avenir. Je vais utiliser uniquement le modèle et la demande de garder le test au minimum, donc défini pour ne rien utiliser d'autre.
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
...
Ensuite, définissez FactoryBot pour que la méthode puisse être utilisée sans écrire de classe dans RSpec.
spec/rails_helper.rb
RSpec.configure do |config|
+ config.include FactoryBot::Syntax::Methods
...
Référence: Procédure d'installation de Rspec et Factory_bot dans l'application Rails
À ce stade, exécutez rubocop pour éliminer l'erreur, et lorsque l'erreur devient zéro, git commit.
Notez que -a dans rubocop -a
est une commande qui corrige automatiquement les choses qui peuvent être automatiquement corrigées, donc si vous obtenez un grand nombre d'erreurs la première fois, si vous le déplacez à nouveau, le nombre devrait diminuer immédiatement après la correction automatique.
La préparation a été très longue, mais maintenant que nous sommes prêts, nous allons faire un modèle.
$ rails g model Post subject:string body:text
Lorsque vous exécutez cette commande, 4 fichiers de model, migration, spec et factory_bot seront affichés. Sera généré.
$ rails db:migrate
Si vous obtenez l'erreur suivante lors de l'exécution, postgres est arrêté et démarrera.
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
Lors de l'exécution de la commande rails console, pry peut faire plus que l'irb standard.
Gemfile
group :development, :test do
+ gem "pry-rails"
+ gem "pry-byebug"
...
end
$ bundle
Il faut du temps pour implémenter le contrôleur et vérifier le fonctionnement, alors essayez de voir si le modèle peut être enregistré et chargé dans la base de données avec la console des rails.
$ 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>]
J'ai enregistré un message dans [1] et j'ai tout obtenu dans [2]. Apparemment, vous pouvez créer et lire normalement.
[Vers la table de sérialisation]
Recommended Posts