ユーザー登録して、本人確認メール(confirmation instructions e-mail)が送信されるテストを書いていて。
これまではたしかに ActionMailer::Base.deliveries
にメールが入っていたんだけど、Devise のバージョンを上げてから、テストがこけるようになったので調べた。
原因
原因は下記の Devise の CHANGELOG に書いているとおり。
要は、本人確認メールを送信するタイミングを変更したとのこと。
- 4.1.0 より前:
after_create
のコールバック - 4.1.0 以降:
after_commit
のコールバック
これによって、テストの設定を use_transactional_fixtures = true
にしていたりとか、DatabaseCleaner
を transaction strategy で利用していたりすると影響が出る。
対応
-
https://github.com/plataformatec/devise/blob/master/CHANGELOG.md#410 のとおり
test_after_commit
を使う、でよさそう。