今回開発している、Railsアプリケーションの初めてのテストを、Rspecで書いてみたいと思います。
「Railsアプリケーションのトップ画面を作成しよう!」で、トップ画面のコントローラーを、generateコマンドで生成して、そのままの状態です。
Railsのテストフレームワークは、Rspecの他にも色々とありますが、会社でもRspecを利用しているので、勉強のため開発効率の向上を目指している為、同じくこのアプリケーションでも、Rspecを選択して開発していきたいと思います。
以下、何と無くですか、伏せたい情報には、「xxx」としていますので、ご了承くださいm(__)m
【目 次】
1.テストの実行
早速ですが、いきなり、rspecコマンドで、テストを実行してみます。
$ bundle exec rspec
ちなみに、上記の実行の仕方は、全部のテストを実行する形式です。
テストを指定したい場合は、下記のように、rspecコマンドの後に、ファイルを指定します。
また、「top_controller_spec.rb:10」のように行数を指定することもできます。
この例だと、10行目以降のテストが実行されます。
bundle exec rspec spec/controllers/top_controller_spec.rb
実行結果を見てみると・・・こんなエラーが出力されました。
/xxx/xxx/xxx/pgnyumon/spec/controllers/top_controller_spec.rb:1:in `require': cannot load such file -- rails_helper (LoadError)
from /xxx/xxx/xxx/pgnyumon/spec/controllers/top_controller_spec.rb:1:in `<top (required)>'
requireしている、rails_helperが読み込みないとのこと。
あぁ、コントローラーを生成したから、Rspecのひな型が出力されていましたが、まだ、installを実行していませんでした。
なので、installを実行します。
$ rails generate rspec:install
create .rspec
exist spec
create spec/spec_helper.rb
create spec/rails_helper.rb
そうすると、helperが生成されました。
なので、再度、rspecコマンドを実行してみます。
$ bundle exec rspec
/xxx/xxx/xxx/pgnyumon/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /xxx/xxx/xxx/pgnyumon/config/application.rb to limit the frameworks that will be loaded.
*
Pending: (Failures listed here are expected and do not affect your suite's status)
1) TopHelper add some examples to (or delete) /Users/kana/ticklecode/pgnyumon/spec/helpers/top_helper_spec.rb
# Not yet implemented
# ./spec/helpers/top_helper_spec.rb:14
Finished in 0.00134 seconds (files took 10.86 seconds to load)
1 example, 0 failures, 1 pending
実行結果の「1 example, 0 failures, 1 pending」の意味は、1つのテストは、1つの保留状態であるということです。
確かに、top_helper_spec.rbの中身は、出力しただけで、まだ一行もコードを書いていないので、こんな感じです。
require 'rails_helper'
RSpec.describe TopController, type: :controller do
end
2.初めてのテストを書く
Ruby on Rails が学べるオンライン講座
オンライン講座なら、好きな場所で好きな時間に学習できます。Ruby on Rails も学ぶことができるので、ぜひ、活用しましょう。
Udemy(ユーデミー)
オンライン動画学習サイトで、Ruby on Rails講座やRuby講座もあります。頻繁に講座のバーゲンセールスが実施されているので、価格をチェックしましょう!一度、購入した動画は繰り返し使えますので何度でも学習可!
世界最大級のオンライン学習サイトUdemy
CodeCamp(コードキャンプ)
現役のRubyエンジニアによる個別指導で、Webサイト制作を基礎から習得できます。無料体験レッスンが受講できるので、気軽に受講体験ができます。
Ruby と Ruby on Railsマスターコース