johnpbloch / wp-behat-extension
Requires
- php: >=5.4
- behat/behat: ^3.0
- behat/mink-extension: ^2.1
- phpunit/phpunit: ^4.0
- symfony/finder: ^2.7
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
导入所有上下文,因此如果您需要所有上下文,这将允许您一次使用它们。AuthenticationContext
和MultisiteContext
不包括在WpContext
中,因此如果您需要运行涉及认证或多站点的测试,您还需要包括它们。
所有上下文的当前列表如下
JPB\WpBehatExtension\Context\WpContext
- 包含所有上下文,除了
AuthenticationContext
和MultisiteContext
- 包含所有上下文,除了
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作为启动脚本。这将安装firefox
和xvfb
,下载独立selenium 2服务器并作为由upstart管理的后台守护进程运行(例如,使用sudo start selenium
等)。脚本可能在任何基于debian的机器上工作,但我只在VVV上进行了测试。
电子邮件可能会很棘手。因为步骤定义不与请求共享内存,如果您没有设置测试环境以拦截电子邮件,就无法从测试中关闭它们。我更喜欢始终确保在VVV上运行mailhog并安装WP Mailcatcher插件(mailhog被构建成与mailcatcher相同的方式,因此mailcatcher的插件工作方式完全相同)。只是要注意,如果您没有积极采取措施确保不发送电子邮件,您将会发送电子邮件。这同样适用于您可以采取的任何其他行动(例如,新闻通讯订阅、发布到社交媒体等)。
确保您有可以承受丢失的虚拟数据。确保您没有使用生产API密钥和第三方服务的账户。
致谢
这项工作是在John Blackbourn的WordPress Behat Extension的基础上松散构建的。如果您需要一个假设您没有运行网站的扩展,那么这个扩展可能更适合。从理论上讲,您仍然可以使用这个包与他包一起使用,只要您一次不加载两个扩展。
许可
MIT