3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails(v4)チュートリアル3章メモ

Posted at

サンプルアプリ作成

$ rails new sample_app --skip-test-unit
$ cd sample_app

Test::UnitフレームワークではなくRspecを後で使うためデフォルトのテストは生成しないようにする。

Rspecを使うのに必要なライブラリをGemfileに記述

2つの新しいgemを使う。

  • RSpecのためのgem
    • rspec-rails
  • RSpecのライブラリのためのgem
    • Capybara

メモ

--without productionオプションを追加することで、本番環境のgemのみをインストールしないようにすることができます。注: このオプションは “remembered option” と呼ばれるもので、このオプションを一度実行するとコマンドに保存され、今後Bundlerを実行するときにオプションを追加する必要がなくなります。このため、今後は単にbundle installを実行するだけで、自動的に本番環境用gemをスキップできるようになります2。

秘密トークンを動的に生成する。

securerandomライブラリを読み込んでSecureRandom.hex(64)でscecret_tokenを自動生成する

config/initializers/secret_token.rb
require 'securerandom'

def secure_token
  token_file = Rails.root.join('.secret')
  if File.exist?(token_file)
    # Use the existing token.
    File.read(token_file).chomp
  else
    # Generate a new token and store it in token_file.
    token = SecureRandom.hex(64)
    File.write(token_file, token)
    token
  end
end

SampleApp::Application.config.secret_key_base = secure_token

RSpecを使うようにRailsの設定を変更

以下のコマンドを実行

$ rails generate rspec:install

静的ページの作成

アクション作成

  • StaticPages
    • Homeページ
    • Helpページ
    • Aboutページ
$ rails generate controller StaticPages home help --no-test-framework

静的ページ作成でテストは必要ないから--no-test-frameworkオプションを付けている。

テスト駆動開発

テスト駆動開発で最初に書く、失敗するテストのことを、一般的なテストツールでは「赤色 (Red)」と表現します (失敗時に表示が赤くなるツールが多いため)。同様に、次に書く、テストにパスするコードのことを「緑色 (Green)」と表現します。最後に、必要に応じてコードをリファクタリング (例えば、動作を変えずにコードを改善したり、冗長なコードを削除したりすること) します。このサイクルのことを「Red/Green/Refactor」と呼びます。

静的なページに対する結合テスト (request spec) を生成

$ rails generate integration_test static_pages
      invoke  rspec
      create    spec/requests/static_pages_spec.rb

RSpec はダブルクォート (") で囲まれた文字列を無視

visit '/static_pages/home'

上の行は、Capybaraのvisit機能を使って、ブラウザでの/static_pages/homeURLへのアクセスをシミュレーション。

expect(page).to have_content('Sample App')

次の行 (上のコード) では、これもCapybaraが提供するpage変数を使って、アクセスした結果のページに正しいコンテンツが表示されているかどうかをテスト

Rspecを実行するために

リスト3.10に示した1行を spec_helper.rbに追加する必要がある

spec_helper.rb
# This file is copied to spec/ when you run 'rails generate rspec:install'
.
.
.
RSpec.configure do |config|
  .
  .
  .
  config.include Capybara::DSL
end

テストの実行

$ bundle exec rspec spec/requests/static_pages_spec.rb

Spork を使ったテストの高速化

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?