设置测试数据
功能测试数据经常被修改。这可能导致测试套件的后续运行失败(因为数据可能已从其所处的原始状态更改)。
如果你使用支持迁移或种子设定的 ORM 或框架(如 Doctrine , Propel , Laravel ) 设置数据源,则可以使用此设置在每次测试运行时创建一个包含 Fixture 数据的新测试数据库。
如果你当前没有使用其中一个(或等效的),你可以使用 Phinx 等工具快速设置新的测试数据库或为每次测试运行准备现有数据库(清理测试条目,将数据重置回原始状态) )。
# Install Phinx in your project
$ php composer.phar require robmorgan/phinx
$ php vendor/bin/phinx init
Phinx by Rob Morgan - https://phinx.org. version x.x.x
Created ./phinx.xml
将数据库凭据添加到 ./phinx.xml
。
$ php vendor/bin/phinx create InitialMigration
你可以使用文档中提供的语法指定数据库表的创建和填充方式。
然后,每次运行测试时都运行如下脚本:
#!/usr/bin/env bash
# Define the test database you'll use
DATABASE="test-database"
# Clean up and re-create this database and its contents
mysql -e "DROP DATABASE IF EXISTS $DATABASE"
mysql -e "CREATE DATABASE $DATABASE"
vendor/bin/phinx migrate
# Start your application using the test database (passed as an environment variable)
# You can access the value with $_ENV['database']
database=$DATABASE php -d variables_order=EGPCS -S localhost:8080
# Run your functional tests
vendor/bin/behat
现在,你的功能测试不会因数据更改而失败。