Ruby on Rails (3.x >= 3.2.9) のためのブログです (どっちかというと社内ブログ的な感じで、基礎から書いてきます) 。
Comments

Unit Testは、以下のコマンドで実行できます。

# test/units 以下ファイルすべてをテスト
$rake test:units
# 指定したファイルのみテスト
$rake test:units TEST=[テストするスクリプトへのパス]


① まず最初にテスト用のデータベースを作成


# 現在のschema.rbの情報をもとにテストDB作成
$ rake db:test:load
# テストDBの削除は以下のコマンド
$ rake db:test:purge
# (他にもいくつか作成用コマンドがあります)

ちなみに、texture で記述したテストデータが展開されます。


② テストの内容を作成


たとえば、userモデルのスクリプトのテストをしてみることにします。
そのために、まずテスト用のスクリプトを編集します。model を作成した際に、test/unit 以下に user_test.rb が作成されているはずです。デフォルトでは以下の様なコードになっています。
# test/unit/user_test.rb
require 'test_helper'

class UserTest < ActiveSupport::TestCase
  # test "the truth" do
  #   assert true
  # end
end

これを、編集します (例えば以下)
# test/unit/user_test.rb
require 'test_helper'

class UserTest < ActiveSupport::TestCase
  
  def setup
    # テストメソッドの実行前に行いたい内容を記述
    # texture の読込のような、リソースの初期化など
    # e.g.) @u = users(:user1)
  end

  def teardown
    # テストメソッドの実行後に行いたい内容を記述
    # リソースの破棄など
    # e.g.) @u = nil
  end

  test "user save" do
    user = User.new({
      :name => 'ユーザー1',
      :email => 'test@example.com'
    })
    assert user.save, "ユーザーの保存に失敗しました"
  end
end
※1 ここで、test の後の "user save" はテストの名前で、一意な名前で指定
※2 setup は、テストメソッドの実行前に呼び出される
※3 teardown は、テストメソッドの実行後に呼び出される

assert文は、処理結果が正しいかチェックするためのメソッドです。
様々な種類のチェック用メソッドがありますが、それは[ユニットテストで使うメソッド | Railsドキュメント]を参考にすると良いと思います。


③ テストを実行


この様に、テストスクリプトを書いたら、冒頭に記述したコマンドを打てばテストを実行できます。
$rake test:units TEST=test/unit/user_test.rb

Categories: , , , ,

Leave a Reply