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

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

Pocket
LINEで送る

今回開発している、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の勉強で参考になった書籍です!

Ruby on Railsで質問したい!

Teratail(テラテイル)

WEBエンジニア専用のQ&Aサイトで、RubyやRailsも質問することができます。活発に質問と回答がされていますので、会員登録をして利用してみると良いと思います(^o^)。

エンジニアのためのQ&Aサイト【teratail】

Ruby on Railsが学べるオンラインスクール

好きな場所で好きな時間に受講できるオンラインスクール!最近は、Ruby on Railsも学ぶことができます!

TechAcademy(テックアカデミー)

オンラインでの週2回マンツーマンでのメンタリング、毎日15〜23時のチャット・レビューサポートで短期間で未経験からオリジナルサービスを開発できるようになる学習プログラム。オリジナルサービスをHerokuを使って公開するところまでを行います。

オンラインブートキャンプ Webアプリケーションコース

Pocket
LINEで送る