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
[...]