UserControllerのテストが失敗しまくる

restful_authenticationプラグインをインストールして、それが生成したテストを実行してみましたがやたらと失敗するので、色々ためしてみたところ、use_transactional_fixturesをfalseに設定してみたところ、ほとんど通るようになりました。

これってtrueにすると、各テストを実行する際にトランザクションを開始して、テストが終わったらロールバックすることでテストを高速化しようというフラグですが、これがfalseでテストがパスするってことは、どうやらMySQLのテーブルがトランザクションが使えるInnoDBではなくMyISAMになってるっぽい。show table status;で調べてみたら、やっぱりそうなってました。

今の僕の環境は、MySQLのパッケージを http://dev.mysql.com/downloads/mysql/5.0.html からダウンロードしてインストールしたものだったのですが、デフォルトのエンジンにInnoDBを設定していなかったことが問題だったので、気を取り直してバッサリ削除して、こちら(http://snakemanshow.blogspot.com/2008/04/mac-os-x-mysql.html)を参考にportからインストール、設定し直したところ、use_transactional_fixtures = trueでテストもパスするようになりました。