gpt4 book ai didi

在 clojure 测试中测试邮件服务器

转载 作者:行者123 更新时间:2023-11-28 21:20:50 25 4
gpt4 key购买 nike

我需要在 clojure 项目中测试我们的邮件服务器。为此,我想我会打开一个模拟服务器并使用这个模拟服务器发送电子邮件并检查它们是否已发送。为此,我找到了这个 server .

能够执行

lein test

并测试每个测试,我需要在每次测试之前和结束时运行一次 SMTP 服务器。我还可以在夹具中运行服务器并在每次测试后退出。由于我正在运行大约 100 个测试,因此始终启动和关闭服务器没有意义。

我认为我的方法如下:

1 - 我编写了一个启动(模型)邮件服务器的 bash 脚本,运行 lein 测试,然后关闭服务器。(这里我失去了在IDE中执行lein测试的便利性)

2- 我可以用固定装置检查服务器是否已启动,如果没有则启动它。然而,在测试完成后,服务器仍将运行,这是不希望的。

解决这个问题的正确方法是什么?

我可以在 clojure 中订购测试,以便最后一个测试文件关闭邮件服务器吗?

最佳答案

一种解决方案是使用 Java GreenMail图书馆。它允许您在 JVM 中启动 SMPT 邮件服务器,这使得启动、停止和检查变得容易。

以下是我使用 GreenMail 进行测试的一些片段。首先创建邮件服务器:

(def mail-setup (ServerSetup. ServerSetup/PORT_SMTP nil ServerSetup/PROTOCOL_SMTP))
(def green-mail (GreenMail. mail-setup))
(.start green-mail)
; Now the server listens on localhosts SMPT port for emails. Run your test code
; Run the code under test. Then you can receive the emails
(doseq [m (.getReceivedMessages green-mail)]
; Verify the emails etc
(println "Subject: " (.getSubject m)
" TO: " (str/join "," (.getRecipients m Message$RecipientType/TO)))
)
; When done
(.stop green-mail)

根据您的测试,您可以在每次测试中启动和停止它。或者可能让测试服务器运行整个测试套件。

查看 GreeMail 文档以获取更多详细信息。它支持大量场景。

关于在 clojure 测试中测试邮件服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com