vierge-noire / cakephp-behat-suite
行为驱动测试的测试套件。
Requires
- behat/behat: ^3.8@dev
- cakephp/cakephp: ^4.0
- pakacuda/cakephp-fixture-factories: ^2.0.3
- vierge-noire/cakephp-test-suite-light: ^2.0
Requires (Dev)
- phpstan/phpstan: ^0.12.48@dev
- phpunit/phpunit: ~8.5.0
- vierge-noire/cakephp-test-migrator: ^2.0
README
这是一个针对行为驱动开发的 CakePHP 专用套件。
安装
适用于 CakePHP ^4.0
composer require --dev vierge-noire/cakephp-behat-suite "^0.2"
适用于 CakePHP ^3.8
composer require --dev vierge-noire/cakephp-behat-suite "^0.1"
设置
将此文件复制到您的应用程序主目录下,命名为 `behat.yml`
#behat.yml
default:
autoload:
'': '%paths.base%/tests/Behat'
suites:
app:
paths:
- '%paths.base%/tests/Behat/features'
contexts:
- CakephpBehatSuite\Context\BootstrapContext:
bootstrap: '%paths.base%/tests/bootstrap.php'
- Context\AppContext
behat.yml
文件相当于 PHPUnit 的 phpunit.xml
文件。%paths.base%
指向您的应用程序主目录。
一旦您的 behat.yml
文件创建完成,运行 vendor/bin/behat --init
以自动创建配置文件中定义的文件夹和上下文类。
您可以定义额外的套件,除了应用程序套件外,例如为您的插件。
重要:每个套件中都应该存在 CakephpBehatSuite\Context\BootstrapContext
。参数 bootstrap:
应指向测试的 bootstrap.php
文件。
对于每个套件,您都必须在 path
键下指定您的功能位置。
该包提供由 CakephpBehatSuite\Context\BootstrapContext
定义的步骤集。
运行您的测试
命令 vendor/bin/behat
将根据 `behat.yml` 文件中定义的内容运行您的测试。
数据集工厂
该包使用了 CakePHP 数据集工厂插件。请确保您的工厂已制作并正常工作,以便使用本包。
您可以在以下位置找到该包及其文档 这里。
BootstrapContext 类
CakephpBehatSuite\Context\BootstrapContext
包含了一系列步骤,以下将进行说明。
上下文将确保在每个场景之前清空测试数据库。
示例
功能
以下是您的 UsersController 的编辑操作集成示例
Feature: Users edit
Background:
Given I create 1 user with id 1
And I am a user with a UsersGroups.Permissions name Users
And I log in
Scenario:
When I get 'users/edit/1'
Then the response is OK
# Edit a non existent user
Scenario:
When I get 'users/edit/2'
Then the response triggers an error
# Edit an existing user
Scenario:
When I post 'users/edit/1' with data:
| username | email |
| foo | foo@foo.foo |
Then I am redirected to 'users'
And this user exists:
| id | username | email |
| 1 | foo | foo@foo.foo |
behat.yml 与插件
此 behat 文件包含一个针对示例插件 MyCustomPlugin 的套件。对于每个套件,还添加了一个上下文。
#behat.yml
default:
autoload:
'': '%paths.base%/tests/Behat'
suites:
app:
paths:
- '%paths.base%/tests/Behat/features'
contexts:
- CakephpBehatSuite\Context\BootstrapContext:
bootstrap: '%paths.base%/tests/bootstrap.php'
- Context\AppContext
my-custom-plugin:
paths:
- '%paths.base%/plugins/MyCustomPlugin/tests/Behat/features'
contexts:
- CakephpBehatSuite\Context\BootstrapContext:
bootstrap: '%paths.base%/tests/bootstrap.php'
- Context\TestPluginContext
使用迁移
充分利用 Phinx 迁移 以维护测试数据库的模式。这是可选的,但强烈推荐。
CakePHP Test Migrator 包 将帮助您非常简单地完成此操作。
许可证
CakePHPFixtureFactories 插件在 MIT 许可证 下提供。
版权所有 2020 Juan Pablo Ramirez 和 Nicolas Masson
在 The MIT 许可证下许可。文件的分发必须保留上述版权声明。
作者
- Juan Pablo Ramirez
- Nicolas Masson