私は、@Asyncを叩いて非同期メーリングのメリットを享受したいというメーラをいくつか持っています。Spring 3.0.xで@Asyncメーラーを正しくテストするには?
私が抱える唯一の問題は、それらを正しくテストする方法がわからないことです。私が現在テストしているメソッドを簡単に取りたいだけです。それが可能であればテストコード。
たとえば、テストクラスでは、2つのautowired beanを定義します。 1つはメーラーサービスであり、メールのようなすべてのトランザクションを担当し、もう1つはJavaMailSenderですが、それはモックです。私はちょうど私のモック質問をしたりすることからデータを取得することができますので、このアプローチは本当によく働いた
@Autowired
Mailer mailer;
MockJavaMailSender mailSender;
@Before
public void setup() {
mailSender = new MockJavaMailSender();
mailer.setMailSender(mailSender);
}
);それは実際に本物の電子メールを送信しないように、私はその後、サービスにモックを配置します私のメーラーのコードが動作することを確認してください:
UserAccount userAccount = userAccountDao.find(1);
mailer.sendRetrievePassword(userAccount);
mailSender.assertTimesSent(1);
String text = mailSender.getMimeMessage().buildText();
// Do tests on text.
@Asyncの問題はMailSenderのがまだ読み込まれていないということですので、テストは失敗します。
@Async
@Override
public void sendRetrievePassword(UserAccount userAccount) {
mailSender.send(new MimeMessageSupport(velocityEngine)
.setTitle("Retrieve Password")
.setTemplate("mail/retrievePassword.vm")
.setToEmailAddress(userAccount.getEmailAddress())
.addObject("userAccount", userAccount));
}
これを修正するには、本当に簡単な方法があります:ここ
は@Asyncを使用するコードはありますか?
ある場合この例では '@ Async'を使用していますか? – skaffman
@skaffman:上に投稿します – egervari