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