Railsテストに挑戦!Rspecでテストを書いてみよう!

STEP19:Ruby on Railsテストに挑戦!Rspecでテストを書いてみよう!#Rails


今回開発している、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マスターコース



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください