rpkamp/mailhog-mink-behat-context

Mailhog 为 Behat 定制的扩展

1.1.0 2023-05-20 15:07 UTC

This package is auto-updated.

Last update: 2024-09-20 18:33:55 UTC


README

这是一个 PHP (7.4+) Behat 上下文,用于与 Mailhog 集成,同时支持 Mink

允许在邮件中模拟链接点击,并在 Mink 中从链接的 URL 继续执行。适用于浏览器-电子邮件-浏览器流程,例如忘记密码重置。

此上下文基于来自 rpkamp/mailhog-behat-extensionMailhogAwareContext

安装

此包不需要任何特定的 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-extensionrpkamp\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)。