deviseを導入しているRailsアプリのテストの注意

Rails3でdeviseを導入している際の、テストを書くときの注意です。

deviseのREADMEには、テストをする時にはdeviseのテストヘルパーをインクルードする必要があると書いてあります。
https://github.com/plataformatec/devise/blob/master/README.rdoc

ただこの中に、

You can include the Devise Test Helpers in all of your tests by adding the following to the bottom of your test/test_helper.rb file:

と書いてありますが、これは間違いのようです。

test/test_helper.rb内のクラスは全てのテストに継承されるので、unitだろうがfunctionalだろうが読み込んでしまいます。

この通りにテストを書いてみたら、どうもうまくいかない。。。
ググッてみたところ以下のページが見つかりました。
https://github.com/plataformatec/devise/issues/1114

Devise::TestHelpers are not meant to be used outside controller/functional tests.

Devise::TestHelpersは機能テスト以外で使われることを意図していない???

正反対のことを言っていますねw
READMEが間違っているようです。

素直に、test/test_helper.rbから消し、functionalテストのそれぞれでインクルードしたところ、テストが動きました!

READMEは信じないようにw


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください