tedivm / dovecottesting
IMAP 测试套件
README
此包用于通过提供一致的邮箱来测试 IMAP 和 POP 客户端库。这个易于使用的库允许开发者使用 Vagrant 和 Travis-CI 本地运行测试套件,而无需进行任何修改。
此包可用于测试任何语言的库。它最初是为了支持一个 PHP 库 Fetch 而构建的,因此已经内置了一些针对 PHP 开发者的额外支持。我鼓励大家提交功能请求,甚至更好的,提交拉取请求,以帮助使此包对其他语言更具可消费性。
用法
SetupEnvironment.sh
SetupEnvironment.sh 文件作为一系列不同脚本的包装器。它确定它被要求控制以下哪个系统,然后采取适当的步骤来设置测试环境。
使用此脚本的最佳方式是将它直接集成到您的测试套件中,通常是作为引导程序或预测试操作。这样,您可以像平常一样调用测试套件,并确保环境完全一致。
服务器设置
- 用户名: testuser
- 密码: applesauce
- IMAP: 143
- IMAPS: 993
- POP: 110
- POPS: 995
- Vagrant IP 地址: 172.31.1.2
- Travis IP 地址: 127.0.0.1
PHP
此包通过 Composer 提供,这使得将其集成到 Travis-CI 非常简单。
首先,将相关行添加到您的 composer 配置中
"require-dev": {
"tedivm/dovecottesting": "~1"
},
然后修改您的 Travis 配置
before_script:
- composer install --dev
- vendor/tedivm/dovecottesting/SetupEnvironment.sh
Vagrant 注意事项
您需要安装 Vagrant 和 VirtualBox 以进行本地开发。一旦安装了这些包,剩下的只是按照上述方法调用 SetupEnvironment.sh。
您第一次使用 Vagrant 启动环境时,可能需要下载模板箱。这可能会增加脚本启动时间几分钟,但只需发生一次。
如果环境已经存在,则此脚本将简单地将其电子邮件重置为原始状态,以便可以再次运行测试。这个过程只需几秒钟。
虚拟机将在 SetupEnvironment.sh 上次运行后的 30 分钟自动关闭,这应该在每次运行测试套件之前发生。这保持了机器在测试期间运行,以便您可以快速切换,但同时也确保当未使用时不会留下运行中的机器。
Travis CI 注意事项
与 Vagrant 一样,您只需要在运行测试之前运行 SetupEnvironment.sh 脚本。将包添加到 Travis CI 可以通过包管理器直接完成,就像上面的 composer 示例一样,或者通过从 git 直接拉取的包装脚本。
添加更多电子邮件
此软件包通过存储一个正在运行的Dovecot邮件目录的副本,然后将该目录复制到测试环境中来工作。添加新电子邮件意味着将其发送到正在运行的Dovecot实例,然后更新资源目录以确保这些更改在多次使用之间保持不变。这可以通过多种方式完成。
首选方式是将邮件客户端连接到正在运行的Dovecot实例,然后使用它来传输电子邮件。大多数邮件客户端,如Mail.app,允许在账户之间拖放传输电子邮件。这种方法最简单,因为它不需要设置SMTP服务器,因为它只是重新使用现有的“真实”账户来创建消息,然后将其传输。这是创建初始电子邮件集的方法。
另一种选择是在Vagrant实例上直接启用Postfix,并使用它来接收消息。这稍微复杂一些,因为它确实需要设置邮件服务器并将其与Dovecot集成。
最后一种方法是向[email protected]发送包含所需消息的电子邮件,然后在此处打开一个问题请求将其包含在内。显然,这里会有一些周转时间,所以请尝试自己添加它,并随时提出拉取请求以将其包含在此处。