開発現場で役立つ!Ruby on Railsでテストを実行する方法【初心者向け】

Ruby on Railsで行うテストの方法を解説しています。実際にユーザーに使ってもらうまでには何度かテストを行うはずです。それはバグなどを見つけるために行いますが、実際の開発現場でも役立つ知識ですので覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

RubyのフレームワークのRuby On RailsなどWebアプリケーションを作る言語ではテストがとても重要になってきます。

プログラミング言語でのテストと言われると皆さん馴染みが薄いかもしれません。そこで今回はテストについて解説していきたいと思います。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回はRuby on Railsでテストを実行してみよう。

大石ゆかり

田島メンター!!テストとはどのようなことを行うんですか〜?

田島悠介

そのURLにアクセスしたときに、それぞれのファイルが問題なく実行できるかというのを確認することができるんだ。これによって、実際に起動したときにおかしな動作をする部分を前もって見つけることができるよ。

大石ゆかり

なるほど、どの部分で何が間違っているかというのを一覧で見れるという感じでしょうか?便利そうです!

 

テストとは

テストと聞くと皆さんが一番初めに思い浮かべるのは、学校のテストのようなものでしょう。Ruby on Railsのテストでもすることは同じで、作ったwebサービスが正しく動くかどうかを試験します。ただその試験問題を作るのは皆さんで、その試験問題をパスさせるために、プログラミングを改良していくという手順をとります。

 

実際にテストを実行してみる

それでは実際にテストを実行してみます。今回はPagesコントローラーにindexアクションとhomeアクションを追加してそこでテストを行います。

$rails g controller  Pages index home

できたファイルを見てみると下のようなテストファイルができていることが確認できます。

 create    test/controllers/pages_controller_test.rb

中身にはテストがすでに少し記述されています。

require 'test_helper'
class PagesControllerTest < ActionController::TestCase
 test "should get index" do
 get :index
 assert_response :success
 end
  
 test "should get home" do
 get :home
 assert_response :success
 end
end

get:indexはそのアクションを取得、assert_responseでちゃんとアクションが返ってきているかを確認しています。

 

田島悠介

testフォルダの中身を確認してみようか。

大石ゆかり

普段触らないですが、こんなファイルもあったんですね。

田島悠介

次は実際にテストを実行するよ。ターミナルで以下のコマンドを入力しよう。

 

これがテストの中身です。テストを実行するには

$bundle exec rake test

とターミナルで実行してください。

最後に下のように表示されるとテストは成功です。

2 runs, 2 assertions, 0 failures, 0 errors, 0 skips

 

今回は簡単なテストの実行方法について解説しました。テストをしっかりと記述することで思わぬバグを検出することができます。是非理解を深めておくようにしましょう。

 

田島悠介

ここでもしエラーがあった場合はEと表示され、それ以下に具体的なエラー内容が表記されるんだ。エラーの原因を特定する際に役立つよ。

大石ゆかり

実行してから気付いてやり直すより、ずっといい方法ですね。

田島悠介

そうだね。何か新しい動作を追加したりした場合は一度テストして、おかしな箇所がないかチェックするようにしよう。

大石ゆかり

そうですね、心がけます。ありがとうございました!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。