*目次 [#e4367973] #contents *基本 [#o7eabed4] **ファイル構成 [#eed6b1ad] -<RAILS_ROOT>/testの下に書く。 -単体テストは<RAILS_ROOT>/test/unitの下。 -scaffoldなどでひな形を作った場合、モデルに対するテストクラスは次のようになる。 #pre{{ require 'test_helper' class PersonTest < ActiveSupport::TestCase # Replace this with your real tests. test "the truth" do assert true end end }} ** テスト用データベース [#af500535] テスト用のデータベースを準備しないと動かせない(?)ので素直にテスト用のデータベースを準備する。 *** テスト用データベースを作成する [#p73ee352] rake db:test:prepare **テスト実行 [#eaa7c89a] ***直接実行する [#ua8ab1c1] Railsのアプリケーションフォルダで実行する。 ruby -I test test/unit/person_test.rb ***rakeコマンドを使う [#v89f6822] ,rake test,全テストを実行する。 ,rake test:units,ユニットテストを全て実行する。 *トラブルシューティング [#v74818de] ** テストを実行しようとすると"underlying cause no such file to load" [#af003763] ** テストを実行しようとすると"underlying cause no such file to load xxx" [#af003763] -test/fixturesに古いモデル名のymlファイルが残ってないか確認する。 -active_record/fixtures.rbのfixturesメソッドを見ると次のようになってる。 #pre{{ def fixtures(*table_names) if table_names.first == :all table_names = Dir["#{fixture_path}/*.yml"] + Dir["#{fixture_path}/*.csv"] p table_names table_names.map! { |f| File.basename(f).split('.')[0..-2].join('.') } else table_names = table_names.flatten.map { |n| n.to_s } end }} -ymlファイルとcsvファイルのファイル名部分からテーブル名を決めfixtureとして読み込もうとしていようだが、既に存在しない古いモデル名のymlファイルが残っているとテーブル上はなくなっているので矛盾が発生しエラーとなる。