使用 JWebUnit 测试电子邮件联系表单而不发送电子邮件

问题描述 投票:0回答:2

我有一个使用 servlet 和 JSP 页面构建的 Java Web 应用程序。我使用 JWebUnit 编写了一些集成测试(http://jwebunit.sourceforge.net)。

我有一个这样的测试方法:

@Test
public void testContact() {
beginAt("contact");
assertResponseCode(200);

assertFormPresent("form_contact");
assertElementPresent("page_contact_form_uitleg");
assertTextInElement("page_contact_form_uitleg", getMessage("pagina.contact.uitleg"));

assertFormElementPresent("form_naam");
assertFormElementPresent("form_email");
assertFormElementPresent("form_boodschap");

setTextField("form_email", "[email protected]");
setTextField("form_wachtwoord", "Joel1234!");
}

但是,当我在测试方法中提交表单时,电子邮件会被发送出去。有没有一种方法可以像 Rails 中那样测试此电子邮件功能?在 Rails 中,当您处于测试环境中时,应用程序不会发送真实的电子邮件。相反,它将这些电子邮件添加到某种测试队列中,您可以在其中检查电子邮件是否已发送。

我可以在 Java Web 应用程序中使用类似的东西吗?

jsp jakarta-ee servlets email jwebunit
2个回答
0
投票

JSP/Servlet 中没有内置任何内容可以让这种情况自动发生; Rails 是一个框架,而 JSP/Servlet 是较低级别的。但是您的应用程序可能在文本文件或数据库中存储了一些特定于环境的属性;如果您创建一个像

suppressMailSend
这样的布尔值,然后使用这个布尔值来控制您的邮件发送代码是否实际发送邮件(如果没有,则可能将消息记录到您的应用程序日志中),那就可以了。 (一个有用的事情也可以是有条件地将这些邮件发送给您自己,而不是其预期收件人 - 将“真实”收件人地址附加到主题行,以便您知道在生产中邮件将发送给谁 - 有帮助如果您想查看发送的邮件是什么样子。)


0
投票

编写一个类似于 SMTP 服务器的 Java/JSP 应用程序相当容易,它将从您的应用程序接收电子邮件,并将它们存储在一个列表中,并提供一个允许您检查电子邮件的用户界面。

我最初有一个开源包的链接,它可以完成所有这些工作,并且将是一个有用的测试工具,但这被认为是自我推销,因此该链接已被删除。

© www.soinside.com 2019 - 2024. All rights reserved.