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 は、テストメソッドの実行後に呼び出される
※2 setup は、テストメソッドの実行前に呼び出される
※3 teardown は、テストメソッドの実行後に呼び出される
assert文は、処理結果が正しいかチェックするためのメソッドです。
様々な種類のチェック用メソッドがありますが、それは[ユニットテストで使うメソッド | Railsドキュメント]を参考にすると良いと思います。
③ テストを実行
この様に、テストスクリプトを書いたら、冒頭に記述したコマンドを打てばテストを実行できます。
$rake test:units TEST=test/unit/user_test.rb