なんじゃくにっき

プログラミングの話題中心。

play framework 1.2.x でメールの送信テストを行う方法

なんでplay 2.x系統の話じゃないんだよってのはさておき、
 
play framework標準のメール機能を使ってメール送信を行っていると、
devモード及びprodモードではメール送信に成功するのに、
Unitテストではメールの送信ができない、という事象に遭遇しました
(Unitテスト自体は成功している)。
 
ソース読んで原因を調べると、メール送信はFutureパターンを使っていて別スレッドで実行されていて、
元のユニットテストのスレッドがメール送信のスレッドより先に終了してしまうとメール送信も行われないみたい。
 
なので、
mail.send();
Thread.sleep(3000);
みたいにユニットテストのスレッドを終了前に眠らせておけばメールが送れましたよっと。