(備忘録)Everyday Rails 第2章「RSpecのセットアップ」
「Everyday Rails - RSpecによるRailsテスト入門」
Railsを使用したアプリケーションを作成したものの、テストの記述が全然分からない、という状態になったので、RSpecの勉強をできる教材を探していたところ、なんとプロを目指す人のためのRuby入門 (チェリー本)の著者が翻訳を手がけた本を発見しました。
こちらのサイトから購入できます!
販売方法はなんと、購入金額を自由に設定できるという、画期的なシステムでした(最低購入価格は$19からですが)。
先日、なんとか1周は終わらせたのですが、全然理解できていない部分が多いので、復習がてらアウトプットしていきたいと思います!
第1章 「イントロダクション」
第1章はイントロダクションということで、この本のアウトラインや著者の想いなどが書かれています。
著者の思い
その中で、著者の考える基本的な信条というものがあり、
・テストは信頼できるものであること
・テストは簡単に書けること
・テストは簡単に理解できること(今日も将来も)
と書かれており、また
・とはいえ結局、一番大事なことはテストが存在することです。信頼性が高く、理解しやすいテストが書いてあることが大事な出発点になります。
とありました。
テストはどちらかと言うと、とっつきにくいイメージがあったので、学習することから逃げていた節もあったのですが、心を入れ替えてしっかりと取り入れていきたいと思います!
サンプルコードについて
GitHubからサンプルコードを入手できます。
第2章 「RSpecのセットアップ」
早速、本に従って進めていきたいところですが、いきなり、「テストスイート」という聞いたこともない単語に出くわしました。
スルーしてもいいのですが、最初が肝心なので、調べてみました。
テストスイートとは、
ソフトウェアテストの目的や対象ごとに複数のテストケースをまとめたもの。自動化テストにおいては、テストの実行単位となる。
ソフトウェアテスト(動的テスト)の最小単位はテストケースといえるが、実際にテスト作業ではいくつものテストケースを組み合わせることによって不具合をあぶり出したり、確率的に十分なテストを行ったという結論を出したりする。このようなテスト目的やテスト対象に応じて、多数のテストケースを束ねたものをテストスイートという。
らしいです。
僕は知りませんでしたので、勉強になりました。
Gemfileのインストール
まずはRSpecをインストールする必要があります。
group :development, :test do
gem 'rspec-rails', '~> 3.6.0'
end
開発環境とテスト環境の両方で、rspec-railsを読み込みますが、本番環境では読み込みません。
テストデータベースの作成
test:
<<: *default
database: db/test.sqlite3
接続可能なデータベースの作成を行います。
$ bin/rails db:create:all
RSpecの設定
続いて、RSpecのインストールを行います。
$ bin/rails generate rspec:install
インストール時に作成された.rspec
ファイルを以下のように変更すると、RSpecの出力がドキュメント形式になるので、非常に読みやすくなります。
--require spec_helper
--format documentation
rspec binstubで起動時間の短縮を図る
group :development do
gem 'spring-commands-rspec'
end
bundle install
後、新しいbinstubを作成します。
$ bundle exec spring binstub rspec
RSpecを実行してみる
まだテストファイルは一個も作成していませんが、RSpecのインストールを確認する上でも、以下のコードで一度RSpecを起動してみるのがいいと思います。
$ bin/rspec
ジェネレータの設定
今後、アプリを作成していく中で、$ rails g
コマンドを使用してコードを追加する際に、RSpec用のテストファイルも同時作成できるように設定を変更します。
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module Projects
class Application < Rails::Application
config.load_defaults 5.1
config.generators do |g|
g.test_framework :rspec,
fixtures: false,
view_specs: false,
helper_specs: false,
routing_specs: false
end
end
end
fixtures: false
テストデータベースにレコードを作成するファイルの作成をスキップ
view_specs: false
ビュースペックを作成しないことを指定
helper_specs: false
ヘルパーファイル用のスペックを作成しないことを指定
routing_specs: false
config/routes.rb
用のスペックファイルの作成を省略
まとめ
これでRSpecのテスト実行するためのセットアップが整ったことになります。
色々と設定があって、大変ですね。
本によると、既存のtestディレクトリがあった場合は、rails test
コマンドでテストの有無を確認し、必要ならRSpecへの移行を検討するべき、とのことでした。
あくまで準備段階が終わっただけですが、一苦労でした。
Author And Source
この問題について((備忘録)Everyday Rails 第2章「RSpecのセットアップ」), 我々は、より多くの情報をここで見つけました https://qiita.com/jackie0922youhei/items/a27bf5e86e05aac51890著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .