rpkamp/ mailhog-mink-behat-context
Mailhog 为 Behat 定制的扩展
Requires
- php: ^7.4 || ^8.0
- behat/mink-extension: ^2.3
- rpkamp/mailhog-behat-extension: ^1.0.0
- symfony/dom-crawler: ^4.4 || ^5.0 || ^6.0
Requires (Dev)
- behat/mink-goutte-driver: ^1.2.1
- doctrine/coding-standard: ^8.0
- egulias/email-validator: ^2.1.23
- guzzlehttp/guzzle: ^6.3.0
- nyholm/psr7: ^1.3
- php-http/curl-client: ^2.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpmd/phpmd: ^2.9
- phpstan/phpstan: ^1.1
- squizlabs/php_codesniffer: ^3.4.2
- swiftmailer/swiftmailer: ^6.2
README
这是一个 PHP (7.4+) Behat 上下文,用于与 Mailhog 集成,同时支持 Mink。
允许在邮件中模拟链接点击,并在 Mink 中从链接的 URL 继续执行。适用于浏览器-电子邮件-浏览器流程,例如忘记密码重置。
此上下文基于来自 rpkamp/mailhog-behat-extension 的 MailhogAwareContext
。
安装
此包不需要任何特定的 HTTP 客户端实现,但需要 rpkamp/mailhog-client,该客户端基于 HTTPlug,因此您可以注入您选择的任何 HTTP 客户端。因此,当您安装此扩展时,请确保您已经安装了 HTTP 客户端,或者在与安装此上下文的同时安装一个,否则安装将失败。
composer require rpkamp/mailhog-mink-behat-context <your-http-client-of-choice>
有关更多信息,请参阅 HTTPlug 用户的文档。
使用方法
在 Behat 中注册扩展
此上下文要求在您的 behat 配置中启用 rpkamp/mailhog-behat-extension
。
如果您还没有这样做,请将 MailhogExtension 扩展添加到您的 behat.yml
文件中,如下所示
default: suites: # your suite configuration here extensions: rpkamp\Behat\MailhogExtension: base_url: http://localhost:8025
base_url
是 Mailhog Web UI 监听到的 URL(默认为 http://localhost:8025
)。
并将 \rpkamp\Behat\MailhogExtension\Context\MinkAwareMailogContext
包含在您的 behat 上下文中
default: suites: contexts: - rpkamp\Behat\Context\MinkAwareMailhogContext
请注意,此上下文不扩展来自 rpkamp/mailhog-behat-extension 的 rpkamp\Behat\MailhogExtension\Context\MailhogContext
,因此如果您需要两个上下文的功能,您需要在 behat 配置中包含这两个上下文。
Gherkin 步骤
此上下文包含以下 Gherkin 步骤
When I click the link "link-description" in the last received email When I click the link "link-description" in the opened email
此第一步将获取从 Mailhog 收到的最后一封电子邮件,并按顺序搜索具有 "link-description" 作为(以下任一)的链接
- id 属性 (<a id="link-description"></a>)
- 链接文本 (<a>link-description</a>)
- title 属性 (<a title="link-description"></a>)
- alt 属性 (<a alt="link-description"></a>)
- 部分链接文本 (<a>some link-description</a>)
当找到上述任一标准符合条件时,它将停止搜索,并告诉 Mink 跟随该链接,因此您可以从那里继续在 Mink 中执行。这使得密码重置等场景成为可能,其中您收到一封电子邮件,点击该电子邮件中的链接,然后在浏览器中进行一些操作。
第二步使用 rpkamp/mailhog-behat-extension 获取已打开的电子邮件,并使用上述相同的过程在其中的 "link-description" 链接中打开链接。
运行测试
确保 Mailhog 正在运行,然后运行
make test
为测试运行 Mailhog
您可以选择运行自己的Mailhog实例,或者使用提供的docker-compose文件为您运行一个实例。要使用Docker运行Mailhog,请确保您已安装Docker和docker-compose,然后运行:
docker-compose up -d
Mailhog的测试端口
为了防止在测试时与其他Mailhog实例发生端口冲突,测试时应预期Mailhog监听SMTP端口4025(而不是默认的1025),并监听HTTP流量端口11025(而不是默认的8025)。