johnpbloch/wp-behat-extension

dev-master 2016-03-24 16:55 UTC

This package is auto-updated.

Last update: 2024-09-10 07:32:29 UTC


README

WordPress开发的Behat 3.0扩展。

安装

将此存储库添加到您的composer.json。您还应该添加至少一个mink驱动程序(例如Goutte或Selenium2)

{
  "require-dev": {
    "johnpbloch/wp-behat-extension": "dev-master",
    "behat/mink-goutte-driver": "^1.2",
    "behat/mink-selenium-driver": "^1.2"
  }
}

然后运行composer update

使用

此扩展假定您已经设置了测试环境。它不会尝试为您创建配置文件或设置数据库,或为您安装WordPress。它假定您已经有一个工作的WordPress安装。保留一个测试数据库的快照可能是个好主意,您可以从这个快照开始。您可以在测试运行之前导出数据库快照,并在测试运行之后恢复它

wp db export pre-bdd-snapshot.sql
vendor/bin/behat
wp db import pre-bdd-snapshot.sql

要使behat加载WordPress,您必须将扩展添加到您的behat.yml文件

default:
  extensions:
    JPB\WpBehatExtension:
      path: '%paths.base%/wordpress'
    Behat\MinkExtension:
      base_url: 'http://your-site.dev'

WP Behat扩展需要一个path参数来指定它在哪里可以找到WordPress核心。这将如何找到并加载wp-load.php。您还需要在mink扩展的参数中定义基本URL。WordPress扩展将使用此来设置WordPress期望可用的全局值(在多站点上下文中运行时非常重要)。

一旦配置了扩展,就可以将其添加到您套件中所需的任何上下文

default:
  suites:
    default:
      contexts:
        - JPB\WpBehatExtension\Context\WpContext
        - JPB\WpBehatExtension\Context\AuthenticationContext
        - Behat\MinkExtension\Context\MinkContext

WP behat扩展定义了几个Context对象,您可以使用它们。它们都不扩展Behat\MinkExtension\Context\MinkContext,所以如果您想使用该上下文,或者如果您想使用另一个扩展了它的包,您可以在不与此包冲突的情况下这样做。大多数上下文都定义为然后导入需要它们的上下文的特性。JPB\WpBehatExtension\Context\WpContext导入所有上下文,因此如果您需要所有上下文,这将允许您一次使用它们。AuthenticationContextMultisiteContext不包括在WpContext中,因此如果您需要运行涉及认证或多站点的测试,您还需要包括它们。

所有上下文的当前列表如下

  • JPB\WpBehatExtension\Context\WpContext
    • 包含所有上下文,除了AuthenticationContextMultisiteContext
  • JPB\WpBehatExtension\Context\AuthenticationContext
    • 步骤
      • @Given 我未登录
      • @Given 我以:username 和:password 登录
      • @Then 我应该被注销
      • @Then 我应该登录
  • JPB\WpBehatExtension\Context\MultisiteContext
    • 步骤
      • @Given 用户:login 是超级管理员
  • JPB\WpBehatExtension\Context\UserContext
    • 步骤
      • @Given 用户存在
        • | 登录* | 邮箱 | 密码 | 显示名称 | 名字 | 姓氏 | 角色 |
        • 可以通过在元键前加上meta_来指定用户元数据
  • JPB\WpBehatExtension\Context\PostContext
    • 步骤
      • @Given 帖子存在
        • 使用来自wp_insert_post()的标准字段表。
        • 通过在元键前加上meta_来添加帖子元数据

注意事项

这可能很明显,但是当mink驱动程序向您的站点发出Web请求时,它将在步骤定义的不同进程中发生。这意味着在步骤定义中进行的内存中仅操作(例如,操作、过滤器等)不会传播到访问测试站点的页面的Web请求中。

测试不需要在运行测试网站的web服务器相同的环境中运行,但它们确实需要能够执行诸如访问数据库、使用所有相同扩展等功能。因此,我认为在web服务器相同的环境中运行它们会方便得多。如果您使用VVV,可以使用bin/vvv-setup在Vagrant中设置selenium2作为启动脚本。这将安装firefoxxvfb,下载独立selenium 2服务器并作为由upstart管理的后台守护进程运行(例如,使用sudo start selenium等)。脚本可能在任何基于debian的机器上工作,但我只在VVV上进行了测试。

电子邮件可能会很棘手。因为步骤定义不与请求共享内存,如果您没有设置测试环境以拦截电子邮件,就无法从测试中关闭它们。我更喜欢始终确保在VVV上运行mailhog并安装WP Mailcatcher插件(mailhog被构建成与mailcatcher相同的方式,因此mailcatcher的插件工作方式完全相同)。只是要注意,如果您没有积极采取措施确保不发送电子邮件,您将会发送电子邮件。这同样适用于您可以采取的任何其他行动(例如,新闻通讯订阅、发布到社交媒体等)。

确保您有可以承受丢失的虚拟数据。确保您没有使用生产API密钥和第三方服务的账户。

致谢

这项工作是在John Blackbourn的WordPress Behat Extension的基础上松散构建的。如果您需要一个假设您没有运行网站的扩展,那么这个扩展可能更适合。从理论上讲,您仍然可以使用这个包与他包一起使用,只要您一次不加载两个扩展。

许可

MIT