*目次 [#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ファイルが残っているとテーブル上はなくなっているので矛盾が発生しエラーとなる。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS