rspecとは何か?
https://magazine.rubyist.net/articles/0021/0021-Rspec.html
まずは、上のリンク先を読むことで理解の助けになると思われます。
また、以下のリンク先を読むと、
https://qiita.com/shinji1105/items/eb41972b97c91104d7ad
Rspecとは、Ruby on Railsのテストライブラリであり、BDD(テスト駆動開発)のtoolであるということがわかります。ただし、rspecの習得には時間がかかりそうです。
rspecの導入方法
自分の環境でrspecの導入についてまとめた。
以下のページを参照した。
https://qiita.com/luckypool/items/e3662170033347510c3c
https://qiita.com/shizuma/items/8221544601aa3d0770d2
備忘のため、具体的なメモ
vim Gemfile
で、開いたファイルに以下の一行を記述する。
gem 'rspec-rails'
bundle install
rspecの初期化
$ rspec --init
と入力すると、
-bash: spec: コマンドが見つかりません
rbenvを使っている場合、上記のようなエラーが発生する。
rbenvで環境構築した場合、rbenv rehashをする必要があるらしい。
参考)http://ylgbk.hatenablog.com/entry/2014/03/16/112310
$ rbenv rehash
$ rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.1
- rspec-mocks 3.8.0
- rspec-rails 3.8.0
- rspec-support 3.8.0
$ rspec --init
create spec/spec_helper.rb
create .rspec
作業ディレクトリにspecというディレクトリが出来ているので、vim spec/spec_helper.rb などとして、ファイルを確認しておく。
spec/spec_helper.rbとは、テスト時に自動で読み込まれるファイルであり、各テストにおいて共通の処理があればこのファイルに記述するとのこと。
参考)https://www.qoosky.io/techs/f20cbb9b26
rails_helperとspec_helperの違い
参考)https://blog.willnet.in/entry/2014/06/10/142341
「spec/rails_helper.rb に Rails 特有の設定を書き、spec/spec_helper.rbには RSpec の全体的な設定を書く」とこのこと
ドットインストールに解説動画がある
https://dotinstall.com/lessons/basic_rspec
月額980円ですが、解説本が3000円くらいなことを考えると、ドットインストールの方が安上がりですね。4回目くらいまでは無料登録すればみれました。
rspecを解説しているサイトまとめ
下のページを一読して、自分の参考になりそうな部分を探す。
http://www.betterspecs.org/jp/
https://qiita.com/jnchito/items/42193d066bd61c740612
https://qiita.com/geshi/items/a930461f36bae880657d
http://kei-p3.hatenablog.com/entry/2016/05/25/235124
https://www.oiax.jp/rails/rspec_capybara_primer/model_test.html
ここまでリンク先を見ても、結局、自分のプログラムに適用できなさそう
もっとWebサイトのプログラムに近いサンプルが必要だと思います。
上のリンクのサンプルは、railsのサイトの一般的な内容と離れすぎている気がするのです。
うーん。で、見つけました。
https://railstutorial.jp/chapters/static-pages?version=4.0
このサイトをrspecで検索すると、自分の期待しているサンプルに近い形のサンプルが書いてあるので、これを参考にrspecのプログラムを書いて行ってみます。
capybaraは必要なのか
聞いたら、capybaraは必要ないとのこと。
以下、自分の試行錯誤の記録です。
rspecの中で、visitを使うためには、capybaraというgemをインストールしないと行けないみたいなので、以下のリンクの通りやったら、
https://qiita.com/msky026/items/494de080cc92a061fafe
visitはundefined methodのエラーを出さなくなったが、root_pathやらcontact_pathが自分のconfig/routes.rbで指定している書き方が違うのか、
undefined local variable or method `root_path'
というエラーが表示されてしまう。
なんか面倒。編集中。
githubに公開されているrspecのコードを検索して勉強する
この方法が勉強になると言われました。英語のページばかりです。
その他の単体テストのツール
Minitest
https://qiita.com/5t111111/items/5bb86896f85ac9cfc43f
Unit